我正在执行一项任务,以在同一应用程序的第二个实例启动时从系统托盘恢复和最大化窗口。
当第二个实例启动并且无法获取互斥锁时。它调用以下代码来指示第一个实例显示自己:
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;
}
当我测试它时。每当第一个实例隐藏在系统托盘中时,消息就永远不会被捕获。我想念什么吗?
谢谢,