当主窗体最小化到系统托盘时,WM_QUERYENDSESSION 不会触发

问题描述 投票:0回答:1

我试图在系统关闭时捕获 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?

c# windows shutdown system-tray wndproc
1个回答
0
投票

你找到答案了吗? 我也面临类似的问题,但不知道如何解决

© www.soinside.com 2019 - 2024. All rights reserved.