处理WM_CLOSE消息发送到C#Tray App

inv*_*nva 4 .net c#

我发现了一些文章,告诉我如何使用WM_CLOSE消息,但从来没有我的应用程序是必须处理WM_CLOSE消息的人.

有没有办法挂钩WM_CLOSE并处理它?因为WM_CLOSE只关闭托盘图标但不终止进程本身...

问候,

Jar*_*Par 5

要做到这一点,你需要重写WndProc方法上Form这是主要的托盘图标和处理WM_CLOSE

private const int WM_CLOSE = 0x0010;

protected override void WndProc(ref Message m) {
  if (m.Msg == WM_CLOSE) {
    // Close everything
  }
  base.WndProc(ref m);
}
Run Code Online (Sandbox Code Playgroud)

  • 嘿 Jared,非常感谢,但这种方法对我不起作用,因为我在编写托盘图标应用程序时使用了更以托盘为中心的方法。我将使用我自己的 ApplicationContext,因此没有“真实”的形式。但是通用的 ApplicationContext 提供了一个名为“MainForm”的属性,我需要做的就是处理 Closing 事件。 (2认同)