Форум программистов, компьютерный форум, киберфорум
Наши страницы

Альтернативный вызов функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отследить изменение памяти сторонним процессом http://www.cyberforum.ru/cpp/thread1241864.html
Есть основное приложение1. Есть приложение2, которое считывает и изменяет его память. Надо отследить адреса, действие(чтение или запись), значение до и после действия. Куда копать?
C++ Adobe PDF Library (APDFL) - поместить в формируемый документ картину формата PNG Всем привет! Данная тема, возможно, не вполне подходит для данного раздела, поскольку вопрос, преимущественно имеет отношение к API Adobe PDF, конкретнее, к плюсовому API. Я пишу с... http://www.cyberforum.ru/cpp/thread1241863.html
Электронная подпись+работа с сертификатами C++
Здравствуйте!дали задание,саму суть понял,не могу разобраться,как начать писать программу.помогите кто чем может. Вот само задание: Разработать приложение - утилиту командной строки, или с...
Освобождение динамически созданных переменных (2-ого уровня) C++
И так, продолжу старую тему про динамику. На этот раз есть вот что: #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> using namespace std;
C++ Как правильно собрать ICU для g++ под Windows? http://www.cyberforum.ru/cpp/thread1238301.html
Не получается собрать ICU для компилятора g++ 4.8.2. Делаю через MSYS. Мои команды:cd D:/Temp/icu/source ./runConfigureICU MinGW --prefix=D:/Temp/dist --enable-static --disable-shared Всегда...
C++ Как из Wav файла получить комплексные значения для быстрого преобразования Фурье? Пишу программу для вывода спектра Wav файла Беру данные из Wav файла, прочел шапку, дошел до самих значений. Как понимаю это амплитудные значения. Дабы получить спектр, нужно использовать... подробнее

Показать сообщение отдельно
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,555
16.08.2014, 15:44  [ТС]
Так, выкладываю первые тесты.
Тест первый, просто статически описал загрузку функции MessageBoxA. (хотя мучался долго, пока не дописал "_stdcall" в прототипе функция вызывалась, но на возврате значения вылезала ошибка и прога рушилась) Прикрепил архив, где Test1.exe это он и есть. Тест 1 работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//Test 1
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include "windows.h"
#include "windowsx.h"
#include <iostream>
#include <string.h>
 
using namespace std;
 
//typedef int(_stdcall *Make_func)(...);
typedef int(_stdcall *Make_func)(HWND, char *, char *, UINT);
 
int _tmain(int argc, _TCHAR* argv[])
{
    char fn[50]="MessageBoxA";
    int res=0;
    HMODULE hMod = LoadLibrary ("user32.dll");
    if(!hMod)
        cout << "Library not loaded" << endl;
    else
    {
        Make_func me = (Make_func)GetProcAddress(hMod,fn);
        if(!me)
            cout << "Function not loaded" << endl;
        else
        {
            res = me(NULL,"hi","message",NULL);
            cout << res << endl;
        }
        FreeLibrary (hMod);
    }
    getch();
    return 0;
}
Далее Тест2:
C++
1
2
typedef int(_stdcall *Make_func)(...);
//typedef int(_stdcall *Make_func)(HWND, char *, char *, UINT);
Просто заменил прототип, остальное всё так же.
Результат выполнения: MessageBox появляется, но как только его закрываеш вылезает ошибка:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
Видимо на возврате значения, хоть подобная ошибка вылезала и в первом тесте до тех пор пока я stdcall не дописал. Но в тесте 2 я уже не знаю куда копать. =(
Тест 2.exe так же в архиве.

П.С. Извиняюсь сразу за кучу инклюдов, я обычно не помню какие нужны, так что пихаю все подряд)))
0
Вложения
Тип файла: rar Test.rar (17.8 Кб, 1 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru