C# での RegisterWindowMessage と PostMessage の使用方法
C# では RegisterWindowMessage と PostMessage を使用して、ウィンドウメッセージの登録と送信ができます。
- ウィンドウメッセージの登録:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern uint RegisterWindowMessage(string lpString);
// 注册窗口消息
uint message = RegisterWindowMessage("MY_CUSTOM_MESSAGE");
- ネイティブで日本語に言い換える:送信ウィンドウメッセージ:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
// 发送窗口消息
IntPtr hWnd = IntPtr.Zero; // 目标窗口的句柄
IntPtr wParam = IntPtr.Zero; // 消息的wParam参数
IntPtr lParam = IntPtr.Zero; // 消息的lParam参数
bool result = PostMessage(hWnd, message, wParam, lParam);
PostMessage 関数は非同期でメッセージを送信することに注意してください。つまり、メッセージを送信しても、ターゲットウィンドウの処理結果を待機しません。ターゲットウィンドウの処理が完了するのを待って戻り結果を取得する必要がある場合は、SendMessage 関数を使用して同期的にメッセージを送信できます。
また、RegisterWindowMessage 関数は独自のウィンドウ メッセージを登録するために使用、メッセージの一意 ID を返す。この一意 ID は、異なるウィンドウ メッセージを区別するために使用され、メッセージの一意性を保証する。