我试图在系统关闭时捕获 WM_QUERYENDSESSION 以清理应用程序中的一些数据,但看起来 WM_QUERYENDSESSION 仅当主窗体可见或最小化到任务栏时才会启动。当我的应用程序最小化到系统托盘时,根本不会发生 WM_QUERYENDSESSION。
private static int WM_QUERYENDSESSION = 0x11;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
{
systemShutdown = true;
}
base.WndProc(ref m);
}
private void Form1_Shown(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
//WM_QUERYENDSESSION only fires when ShowInTaskbar = true
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
}
所以问题是: 当我的应用程序最小化到系统托盘时是否有可能捕获 WM_QUERYENDSESSION?
你找到答案了吗? 我也面临类似的问题,但不知道如何解决