Windows + D已禁用但无法正常工作

时间:2013-02-15 13:51:52

标签: c# winforms

我有两个窗体,形成MainForm和MinimizedMainForm。我想为这两个表单禁用Windows + D.两种形式的父母是FormBase的第三种形式。我使用以下代码来禁用Windows + D

private const in GWL_HWNDPARENT =-8

IntPtr hprog = NativeMethods.FindWindowEx(NativeMethods.FindWindowEx(NativeMethods.FindWindow("Progman", "Program Manager"),
                          IntPtr.Zero, "SHELLDLL_DefView", ""),
                          IntPtr.Zero, "SysListView32", "FolderView");
        NativeMethods.SetWindowLong(this.Handle, GWL_HWNDPARENT, hprog);

我面临的问题是如果我按下Win + D,我的MainForm永远不会被最小化。 并且如果我按下Win + D,它首次启动MinimizedForm它不会被最小化。 但是如果我按下Win + D,那么对于第二次+时间加载minimMainForm,Form会被最小化。我在两个表单的FormLoad事件上添加了上面的代码。当我点击MainForm上的面板时,会打开MinimizedMainForm,反之亦然。 MainForm是我项目的起始形式。

如何阻止表单最小化第二个+ loadForm事件?

2 个答案:

答案 0 :(得分:0)

也许不是要阻止最小化窗口的最小化,而是必须创建不能最小化的窗口:MinimizeBox = false? (我打赌不是那么简单,但我不能写评论,所以这里有一个解决方案= D)

答案 1 :(得分:0)

基本上,Win + D不是用于最小化窗口而是用于显示桌面。 Win + D =显示桌面。因此,即使您的窗口没有最小化框,它也会被最小化。

此外,当你按下Win + D时,它不是你的应用程序处理它,但是它本身正在处理它,所以它永远不会到达你的应用程序,所以如果你处理它是没有意义的你的申请。

尝试找一些你的应用程序启动的黑客,你停止处理Win + D键的窗口。

注册表中有一个密钥

HKEY_CURRENT_USER \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\ Explorer中

更改热键的值将禁用Win + D组合,但不建议这样做,因为当您的应用程序离开焦点时,您将不得不将其恢复。

是的,如果您正在制作小部件,请遵循创建小部件的要求。它会自动为您提供此类功能