4

我有一个在系统托盘(通知区域)中运行的非常基本的应用程序。该Main方法如下所示:

using (NotifyIcon notifyIcon = new NotifyIcon())
{
    notifyIcon.ContextMenuStrip = new ContextMenuStrip();
    notifyIcon.ContextMenuStrip.Items.Add(new ToolStripMenuItem(
        "Exit", 
        null, 
        delegate { App.Exit(); }
        )
    );

    notifyIcon.Icon = Properties.Resources.MyIcon;
    notifyIcon.Visible = true;

    Application.Run();
}

到目前为止,这工作正常(我可以使用上下文菜单中的退出选项并且应用程序正确退出。但是,当软件卸载时我需要退出应用程序。现在我正在使用taskkill我的 WiX 安装程序来执行此操作(也许有更好的方法?)。问题是,如果我这样做taskkill /im myapp.exe,通知区域中的图标会消失但进程仍在运行。如果我强制关闭它,taskkill /f /im myapp.exe则进程结束但图标仍然存在(直到我将鼠标悬停在它上面)。有没有办法删除图标并从单独的进程中结束进程?

4

2 回答 2

0

将隐藏表单添加到您的应用程序。这将是 Application.Run() 的一个参数。当表单关闭时,您的应用程序将退出。

为了让表单在 WiX 中关闭,我们使用 util:CloseApplication 1并将 CloseMessage 属性设置为 true。

于 2013-04-16T17:13:29.183 回答
0

我决定采取不同的方法。我添加了一个命令行参数来指示我要关闭。然后,此开关SendMessagePostMessage使用RegisterWindowMessage. 然后,WiX 安装程序将使用此命令行参数执行进程,现在一切正常关闭。多么严重的痛苦……

于 2013-04-17T18:17:06.887 回答