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

Вызов функции из DLL в глобальном пространстве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Деструктор вызывается до то возвращения значения из функции http://www.cyberforum.ru/cpp-beginners/thread781753.html
hi hi::operator+(const hi& in) { struc * cur = last; struc *curs = in.last; hi out("0"); int ost = 0, i = cur->a + curs->a + ost; if (i > 9) { out.last->a = i - 10;
C++ надо изменить его так чтобы он находил сумму любых введёных чисел и при вводе числа 0 программа завершалась есть программный код,надо изменить его так чтобы он находил сумму любых введёных чисел и при вводе числа 0 программа завершалась #include <iostream> #include <conio.h> using namespace std; ... http://www.cyberforum.ru/cpp-beginners/thread781750.html
C++ Остановка после cin
здравствуйте, начал изучение C++, скачал visual С++ 2010 и сразу же столкнулся с проблемой. заключается она в том что есть такой код: #include <iostream> using namespace std; int main() { int...
Подскажите как работает программа C++
Программа выводит для заданного массива все простые числа. Помогите понять как работают строки 14-20 и 24-32 Спасибо #include <cstdlib> #include <iostream> #include <iomanip> using namespace...
C++ Unresolved external. Borland ругается http://www.cyberforum.ru/cpp-beginners/thread781719.html
Всем доброго времени! в общем проблема такова, в классе Name имеется статический объект класса fstream f1. При таком раскладе Борланд отказывается компилировать эту программу. Выдает следующее...
C++ Выделение памяти malloc не работает пример из лекции , там пример на доске такой написан - #include <stdlib.h> int main() { int *p=malloc(10000*sizeof(int));//выделили память free(p);//освободили } но такой... подробнее

Показать сообщение отдельно
Tochka
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 6

Вызов функции из DLL в глобальном пространстве - C++

08.02.2013, 09:41. Просмотров 270. Ответов 0
Метки (Все метки)

Добрый день.

Я хочу реализовать перехват активации окна и вызывать вункцию из приложения. Что я делаю не так?
P.S. При запуске и активации любого окна выкидывает ошибку связаную с памятью.

Dll
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
typedef void (__stdcall Delegat)(HWND hndl);
 
#pragma data_seg(".SHARDATA")
Delegat* ProcTriger = NULL; 
HHOOK hook = NULL;
#pragma data_seg()
#pragma comment(linker,"/SECTION:.SHARDATA,rws"); 
 
 
extern "C" __declspec(dllexport) LRESULT CALLBACK FilterFunc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode < 0)
        return CallNextHookEx( NULL, nCode, wParam, lParam);
    if( nCode == HCBT_ACTIVATE)
    {
        ProcTriger((HWND)wParam);
    }
    return CallNextHookEx( NULL, nCode, wParam, lParam);
}
 
extern "C"__declspec(dllexport) void DllCloseFile()
{
    UnhookWindowsHookEx(hook);  
}
 
extern "C"__declspec(dllexport) int DllOpenFile(Delegat proc, HMODULE hndlDll )
{
    ProcTriger = proc;
    hook = SetWindowsHookEx(WH_CBT,FilterFunc,hndlDll,NULL);
    if(hook == 0)
    {
        DllCloseFile();
        return 1;
    }
    return 0;
}
CPP основного проекта
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
void __stdcall Print(HWND hndl)
{
    // Что-то делаем
}
 
int main()
{       
    int (*DllOpenFile)(Delegat, HMODULE);
    void (*DllCloseFile)();
 
    Delegat* proc = Print;
    HMODULE hndlDll = LoadLibrary(_T("hook"));
 
    (FARPROC &)DllOpenFile = GetProcAddress(hndlDll,"DllOpenFile");
    (FARPROC &)DllCloseFile = GetProcAddress(hndlDll,"DllCloseFile");
 
        cout<<"Start programm..."<<endl;    
 
    if(DllOpenFile(proc,hndlDll))
    {
        cout<< "Faild"<< endl;
        return 0;
    }
 
    system("pause");
 
    cout<<"Close programm..."<<endl;
 
    DllCloseFile();
    FreeLibrary(hndlDll);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru