0

我有两个窗体 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 永远不会被最小化。对于 MinimizedForm 的首次启动,如果我按 Win+D,它不会被最小化。但是如果我按 Win+D ,第二次 + 加载最小化的MainForm ,表单会被最小化。我在两个表单的 FormLoad 事件上添加了上面的代码。当我单击 MainForm 上的面板时打开 MinimizedMainForm,反之亦然。MainForm 是我项目的起始形式。

我应该怎么做才能阻止表单最小化 2nd+ loadForm 事件?

4

2 回答 2

0

基本上 Win + D 不是为了最小化窗口,而是为了显示桌面。Win+D = 显示桌面。所以即使你的窗口没有最小化框,它也会被最小化。

此外,当您按下 Win+D 时,不是您的应用程序处理它,而是 Windows 本身在处理它,因此它根本不会到达您的应用程序,因此如果您在应用程序中处理它是没有意义的。

尝试找出您的应用程序启动的一些技巧,您可以阻止 Windows 处理 Win+D 键。

注册表中有一个键

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

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

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

于 2013-02-15T14:26:49.597 回答
0

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

于 2013-02-15T14:05:26.877 回答