我有两个窗体,形成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事件?
答案 0 :(得分:0)
也许不是要阻止最小化窗口的最小化,而是必须创建不能最小化的窗口:MinimizeBox = false
? (我打赌不是那么简单,但我不能写评论,所以这里有一个解决方案= D)
答案 1 :(得分:0)
基本上,Win + D不是用于最小化窗口而是用于显示桌面。 Win + D =显示桌面。因此,即使您的窗口没有最小化框,它也会被最小化。
此外,当你按下Win + D时,它不是你的应用程序处理它,但是它本身正在处理它,所以它永远不会到达你的应用程序,所以如果你处理它是没有意义的你的申请。
尝试找一些你的应用程序启动的黑客,你停止处理Win + D键的窗口。
注册表中有一个密钥
HKEY_CURRENT_USER \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\ Explorer中
更改热键的值将禁用Win + D组合,但不建议这样做,因为当您的应用程序离开焦点时,您将不得不将其恢复。
是的,如果您正在制作小部件,请遵循创建小部件的要求。它会自动为您提供此类功能