私は、PostMessage
apiとprocedure
という署名を持つグローバル変数を持っています。私のプログラムのいくつかの他のユニットではPostMessage
を呼び出し、その後PostMessage
を呼び出します。GetProcAddressによるPostMessage APIの取得方法は?
私のテストでは、PostMessage
は動作しません。何も起こらず、エラー例外も発生しません。任意の助けによって
var
PostMessageAddr_: function(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL;stdcall;
...
procedure GetPostMessage;
var
hModulo: HMODULE;
begin
hModulo := GetModuleHandle(User32);
PostMessageAddr_ := GetProcAddress(hModulo, 'PostMessage');
FreeLibrary(hModulo);
end;
感謝:
は、ここに私のコードです。
FreeLibraryを呼び出しません。 WindowsのユニットからPostMessageを呼び出すほうが簡単です。なぜあなたはそれをこのようにしていますか? –
'PostMessage'は広告として動作します。たぶんあなたのコードにバグがあります。ロードしていないモジュールで 'FreeLibrary'を呼び出すことは確かに疑問です。 – IInspectable
@DavidHeffernan、私は 'GetProcAddress'を使ってIATフックをバイパスしています:D –