Windows サービスから、既に実行中の Windows デスクトップ アプリケーションにメッセージを渡したいと考えています。Windows サービスにタイマーを実装しました。間隔の後、サービスは Windows アプリケーションにメッセージを送信します。
サービスまたは送信者コードは次のとおりです。
System.Diagnostics.Process[] lProcs = System.Diagnostics.Process.GetProcessesByName("TestProcess2");
if (lProcs.Length > 0)
{
IntPtr handle = lProcs[0].MainWindowHandle;
if (handle != IntPtr.Zero)
SendMessage(handle, 232, IntPtr.Zero, IntPtr.Zero);
}
Windows デスクトップ アプリケーション (レシーバー) コードは次のとおりです。
protected override void WndProc(ref Message m)
{
if (m.Msg == 232)
{
MessageBox.Show("Received");
}
else
{
base.WndProc(ref m);
}
}
両方のプロセスが Windows デスクトップ アプリケーションである場合、上記のコードは正常に動作します。Windows サービスを送信者として使用すると、Windows デスクトップ アプリケーション プロセスがメッセージを受信できません。助けてください。