@Chris P
Bei einem globalen Hook gilt, dass die
DLL (also auch die Variablen darin oder Ptr auf diese Variablen) dann fast immer im Adressraum einer jeweils fremden Application untergebracht ist. Dementsprechend haben von dort verschickte Adressen dann in deinem eigenen Prog natürlich keine Gültigkeit mehr (weil doch jede Appllication ihren ganz 'persönlichen' eigenen Adressraum hat).
Nur dann, wenn diejenige HookProc aktiv ist, die beim Erstellen deines globalen Hooks dann auch im Adressraum deines aktuellen Programmes aufgebaut wurde, ..nur dann event. könnte so ein Pointer auch dementsprechend überhaupt brauchbar sein (also nur wenn die Maus gerade über deiner Form1 ist ..wie das ja bei dir der Fall war).
Da man für eine Mitteilung von X/Y-Screen-Koordinaten wohl immer nur 2*2 Bytes benötigen wird, könntest du diese aber z.B. auch über den LParam direkt verschicken:
Code:
var X,Y : Word;
...
X := PMouseHookStruct(lParam)^.pt.x;
Y := PMouseHookStruct(lParam)^.pt.y;
PostMessage(HookRec^.AppHnd, WM_MOUSEHOOK, wp, X*65536 + Y);
edit: lp --> lParam / war 'ne eigene Kurzfassung zum schnelleren Austesten