C# 按WIN+激活桌面;D

C# 按WIN+激活桌面;D,c#,winforms,C#,Winforms,我正在处理包含两个窗体的windows窗体应用程序。一个在点击另一个时隐藏。一次只能看到一个窗体。 我已经为他们两人禁用了Win+D键。使用下面的代码 ntPtr hprog = NativeMethods.FindWindowEx(NativeMethods.FindWindowEx(NativeMethods.FindWindow("Progman", "Program Manager"), IntPtr.Zero, "SHELLDLL_DefView", ""), IntPtr.Zero,

我正在处理包含两个窗体的windows窗体应用程序。一个在点击另一个时隐藏。一次只能看到一个窗体。 我已经为他们两人禁用了Win+D键。使用下面的代码

ntPtr 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时,桌面将被禁用,要激活桌面,我需要再次按下Win+D。这两种形式都在发生。你能解释一下原因吗?无论窗体是打开还是关闭,我都需要桌面始终处于活动状态。这种情况只发生在某些电脑上,而不是所有电脑上。我正在使用Windows 7和Dot NEt 4.0。

这可能不是你想要养成的习惯。很多用户使用windows快捷键,我指的不仅仅是精通电脑的用户。我妻子是一名护士,她使用了其中一些

您正在尝试为使用您的应用程序的所有人更改windows的默认行为,这只是在为“锁定”系统创建本机应用程序时的一个好主意。如果环境不允许使用windows快捷键,则可以更改它们


试图强迫用户做事情从来都不是正确的想法

“您能证明原因吗?”您正在使用未记录的本机调用截取系统范围的键盘快捷键。@BoltClock:实际上这是一个类似桌面小部件的应用程序,所以我不希望它被最小化。@KingCronus:我试过TopMost=true,MinimizeBox=false。还有别的办法吗?请告诉我,不是真的。您的目标操作系统版本是什么?如果Vista或Windows7有一个桌面小部件框架。在Windows 8中,小部件已经贬值,所以我不明白你为什么要创建一个。我同意@KingCronus。Winforms用于制作Winforms。尝试用winforms制作小部件/小工具显然是使用了错误的工具。我想补充一下。如果您正在为“锁定”系统创建本机应用程序,请使用嵌入式Windows,而不是普通Windows。它允许您使用键盘过滤器来防止这些问题@KingCronus:windows引入的不错的功能,但不能同时使用。谢谢分享。