Hallo himitsu
meine Hook-Start-Prozedur sieht wie folgt aus:
Delphi-Quellcode:
procedure HookOn(AppHandle: HWND; Welche: integer); stdcall;
begin
if (Welche = 0) or (Welche = 2) then
HookTastatur := SetWindowsHookEx(WH_KEYBOARD_LL, @CallBackDelHook, HInstance , 0);
if (Welche = 1) or (Welche = 2) then
HookMaus := SetWindowsHookEx(WH_MOUSE_LL, @MouseHookProc, HInstance , 0);
hApp := AppHandle;
end;
Da in der
DLL sowohl ein Maus- als auch ein Tastatur-Hook drin ist, kommt vom Programm, welches den Hook setzt, explizit das Window-
Handle mit und die Steuerung, welche(r) Hook aktiviert werden soll.
Das
Handle wird im aufrufenden Programm mittels WinHand := FindWindow ('TSILog', nil); ermittelt und explizit an die
DLL übermittelt weil diese den Empfang der Tastenkombinationen über SendMessage(hApp, WM_USER + 4242, 0, 0); vollzieht.
Wie gesagt, das funktioniert alles.
Wenn das, was Aphton sagt, stimmen würde, müsste ja das mit mProz := GetCurrentProcessID; klappen, was ich bereits zu Beginn erwähnt habe, aber eindeutig nicht geht.
Und irgendwie ist mir immer noch nicht klar, warum Ihr so auf dem
Handle oder der ID oder was auch immer des Prozesses oder Programmes herum reitet, welches den Hook gestartet hat. Die weiss ich ja. Aber wie komme ich an die PID, welche den Hook (oder von mir aus die
DLL) aufruft?