опять dll
там такой код
extern "C" __declspec(dllexport) void Gethwnd(HWND);
....
//---------------------------------------------------------------------------
void Gethwnd (HWND hParent)
{
Parent=hParent;
}
....
есть прога с таким кодом
proga.h
void (__stdcall *phwnd)(HWND);
proga.cpp
hLib=LoadLibrary("Hook.dll");
if(hLib)
{
(void*)phwnd=GetProcAddress(hLib,"Gethwnd");// ВОТ ТУТ ПРОБЛЕМА. phwnd равно NULL кто нить может сказать почему?
if(phwnd!=NULL)
((void (__stdcall *)(HWND))phwnd)(Application->Handle);
//Gethwnd(Application->Handle);
(void*)pHook=GetProcAddress(hLib,"KeyboardHook");
hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)(pHook),hLib,0);// Ставим ловушки
}
(void*)phwnd=GetProcAddress(hLib,"[COLOR=red]_Gethwnd[/COLOR]");// ВОТ ТУТ Надо так как выделено красным
Это такая "фича" BCB ?
Дело в том, что в VC все нормально без подчеркивания.
Кстати, а что за запись такая?
(void*)phwnd = .....
Не припоминаю, что бы такое было в стандарте...
Может это и есть причина ошибки. Дело в том, что компилятор может понять это как
void* phwnd = .....
и получиться, что создана переменная типа void* в локальном пространстве имен для
if(hLib)
{
..........
}
Я бы рекомендовал делать так:
typedef void (__stdcall *t_phwnd)(HWND);
t_phwnd phwnd;
hLib=LoadLibrary("Hook.dll");
if(hLib)
{
phwnd = (t_phwnd)GetProcAddress(hLib,"Gethwnd");
........................
Это такая "фича" BCB ?
Дело в том, что в VC все нормально без подчеркивания.
видимо фича но без подчепкивания не получается...
теперь все возвращается , но после установки хука при выходе из процедуры где хук ставился вываливается ошибка EAccessViolation типа что то не там читаю, но после этого прога запускается и хук работает :-/
и еще народ поможите пытаюсь что бы прога не реагировала на ALT+F4 и не позволяла винде реагировать CTRL+ESC, на нажатие хук реагирует но приэтом и окно закрывается и менюшка открывается, помогите срочно!!!