处理 Visual Studio 的 FormClosing 事件(确认关闭)

Handle FormClosing event (confirm close) of Visual Studio

我需要写一个应用程序来确认关闭 Visual Studio?我想,可以使用WinForms中的FormClosing事件,可以取消关闭。

主要需要防止Visual Studio2017的意外退出。但是VS 2015+有MetroUI。 NoClose 从标题栏右键菜单中删除关闭菜单,但不能禁用右上角的关闭按钮。

编辑

为什么需要这个: 通常我有很多打开的windows。我使用 WhatsApp 桌面,但此应用程序无法全屏启动。但它看起来像是最大化了。当我尝试通过将指针移动到屏幕右上方来快速关闭它时(在我的右显示器上,甚至没有检查 window 是否最大化),我实际上单击了 window 下的应用程序。其中大部分是 Visual Studio。最终 VS 关闭。我正在使用一个非常大的解决方案,因此打开或关闭该解决方案需要很长时间。由于 VS 不是开源的,我需要以某种方式确认退出。这很烦人而且经常发生(一天 2-3 次)。

另请注意,我不是唯一需要这个的开发人员,其他 IDE 已经有这样的选项。

引用强大的陈峰:

Usability research indicates that users really don't like it when you disable the Close button. It makes them feel trapped and uncomfortable. This is the reason why standard Windows wizards don't provide a way for you to disable the Close button. The user should always have a way out.

我认为这是您不关心的那种问题,只是想要一个解决方案,他 also demonstrates a way 禁用关闭 button/menu:

void DisableCloseButton(HWND hwnd)
{
 EnableMenuItem(GetSystemMenu(hwnd, FALSE), SC_CLOSE,
                MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}

void EnableCloseButton(HWND hwnd)
{
 EnableMenuItem(GetSystemMenu(hwnd, FALSE), SC_CLOSE,
                MF_BYCOMMAND | MF_ENABLED);
}

根据应用程序的不同,这可能还不够,在这些情况下,您需要 inject 将代码写入应用程序并子类化 window 以便您可以处理 WM_CLOSE

创建了一个简单的(单行)扩展。 应该这样做:提示关闭 Visual Studio :)

https://marketplace.visualstudio.com/items?itemName=NikolayBelyh.ClosePrompt2017

只是使用"QueryClose"为包上升提示:

https://github.com/nbelyh/ClosePrompt/blob/e583b2edc1a5a00104e69666b8fdc3efe6dd5896/ClosePrompt/ClosePromptPackage.cs#L56

有用的话给5星吧^_^