从任务栏中隐藏应用程序时未收到帖子消息



如果另一个实例试图打开,我使用 PostMessage 向我的应用程序发送消息:(CUSTOMTEXT替换为我的应用名称(

NativeMethods.PostMessage((IntPtr)NativeMethods.HWND_BROADCAST, NativeMethods.WM_CUSTOMTEXT_SHOWME, IntPtr.Zero, IntPtr.Zero);

在 WndProc 中,我收到以下消息:

protected override void WndProc(ref Message m)
{
    if (m.Msg == NativeMethods.WM_CUSTOMTEXT_SHOWME)
    {
        MessageBox.Show("Message received");
    }
    base.WndProc(ref m);
}

和 NativeMethods 类:

class NativeMethods
{
    public const int HWND_BROADCAST = 0xffff;
    public static readonly int WM_CUSTOMTEXT_SHOWME = RegisterWindowMessage("WM_CUSTOMTEXT_SHOWME");
    [DllImport("user32")]
    public static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);
    [DllImport("user32")]
    public static extern int RegisterWindowMessage(string message);
}

一切正常,但是当我从任务栏(this.ShowInTaskbar = false;(隐藏我的应用程序时,我的应用程序停止接收该消息。

为什么?有什么解决方法吗?

找到了替代解决方案:我用SendMessage(同步(替换了PostMessage(异步(。由于某种原因,SendMessage通过,而PostMessage没有。

在此应用程序中,我使用哪一个并不重要,因为当发送消息时,应用程序只会退出。如果 Windows 处理此消息所需的时间很少,则不会造成任何伤害。点只是应用程序的较旧实例收到此消息。

最新更新