なんとかc++でグローバルCBTフックを記述し、c#で使用できるようになりました。ばかげているように聞こえるかもしれませんが、c#を使用しているため、ポインターとそれらの逆参照に関する知識は非常に悪いです。
lParamが指す構造体内のポインターを逆参照できません。
次のようになります。lParamはCBT_CREATEWND構造体への長いポインタであり、CBT_CREATEWND構造体は、メンバー「lpcs」とCREATESTRUCTへのポインタを保持します。この構造体には、読みたいメンバー「x」が含まれています。次のことを試しましたが、xに無効な値が表示されます。
CREATESTRUCT str = *(LPCREATESTRUCT)(((LPCBT_CREATEWND)lParam)->lpcs);
int normal = str.x;
PostMessage(FindWindow(NULL, L"Process Watcher Window"), RegisterWindowMessage(L"ALEXX_SEINE_WNDMESSAGE_C"), wParam, normal);
誰か助けてくれませんか?