特定のフォームにメッセージを送信する


メッセージを送信したい相手のウインドウハンドルがわからない場合、FindWindowを用いれば特定の相手のウインドウハンドルを取得できる。
この取得したウインドウハンドルを指定してSendMessageを呼ぶことで、特定のウインドウにメッセージを送信する。

■送信側


[DllImport("user32.dll", SetLastError = true)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string className, string windowName);

// 送信したい相手のTextに指定してある値を指定してウインドウハンドルを取得
IntPtr hWnd = FindWindow(null, "Test");

// 取得したウインドウにメッセージを送信
SendMessage(hWnd, 0xAAAA, 0, 0);

■受信側


protected override void WndProc(ref Message m)
{
if (m.Msg == 0xAAAA)
{
// メッセージ受信時の処理
}

base.WndProc(ref m);
}