同じアプリケーションの 2 番目のインスタンスが起動したときに、システム トレイからウィンドウを復元して最大化するタスクに取り組んでいます。
2 番目のインスタンスが起動し、ミューテックスの取得に失敗した場合。次のコードを呼び出して、最初のインスタンスに自分自身を表示するよう通知します。
public static void ShowFirstInstance()
{
WinApi.PostMessage(
(IntPtr)WinApi.HWND_BROADCAST,
WM_SHOWFIRSTINSTANCE,
IntPtr.Zero,
IntPtr.Zero);
}
メッセージは以下を使用して登録されます。
public static readonly int WM_SHOWFIRSTINSTANCE =
WinApi.RegisterWindowMessage("WM_SHOWFIRSTINSTANCE|{0}", 250);
メッセージをキャッチしてウィンドウを表示するために、ウィンドウの背後にあるコードを以下に示します。
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == SingleInstance.WM_SHOWFIRSTINSTANCE)
{
WinApi.ShowToFront(hwnd);
}
return IntPtr.Zero;
}
私がそれをテストするとき。最初のインスタンスがシステム トレイに隠れるたびに、メッセージがキャッチされることはありませんでした。私は何かが恋しいですか?
ありがとう、