Ich hab mal ein bischen rumprobiert, steh aber irgendwie noch auf dem Schlauch:(
Mein Programm das den Hook anlegt sieht jetzt so aus:
MSG Msg;
DWORD d;
HINSTANCE hHookInst = LoadLibrary("c:\\HookDll.dll");
if (hHookInst == NULL)
d=GetLastError();
FARPROC HookProc = GetProcAddress(hHookInst,(LPSTR)MAKEWORD(1,0));
if (HookProc == NULL)
d=GetLastError();
hHook = SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)HookProc,hHookInst,0);
if (hHook == NULL)
d=GetLastError();
while(GetMessage(&Msg,0,0,0))
{
TranslateMessage(&Msg);
}
return Msg.wParam;
[/PHP]
Die HookProc wird von der DLL exportiert, konnte aber komischerweise nur per
Ordinal Nummer gefunden werden.
Die Pocedur sieht so aus:
[PHP]
HOOKDLL_API LRESULT CALLBACK HookProc(int nCode ,WPARAM wParam,LPARAM lParam)
{
pcwp = reinterpret_cast<PCWPSTRUCT>(lParam);
switch(pcwp->message)
{
case WM_LBUTTONDOWN:
{
MessageBox(0,"OK","OK",MB_APPLMODAL);
return 0;
}
}
return 0;
}
Bei einem Mausklick wird aber keine MessageBox geöffnet.
Wie soll ich denn CallNextHookEx() aufrufen?
In der Exe hab ich die Nachricht nicht und in der DLL nicht das Handle zum Hook.
Muß ich das Handle extra an die DLL übergeben?
Gruß
Guybrush