以编程方式显示桌面

5

我正在编写一个Windows窗体应用程序,我需要以编程的方式返回桌面。

我尝试了这段代码,但它没有起作用:

using System;
using System.Windows.Forms;

private void ToggleDesktop() {

SendKeys.Send("^({ESC}D)"); //<-- Semantic error, Should simulate: WIN+D

}

有可能做到这个吗?


https://dev59.com/bGLVa4cB1Zd3GeqPvFGp - Hackerman
https://blogs.msdn.microsoft.com/robgruen/2004/02/24/programmatically-showing-the-desktop-toggledesktop/ - Blorgbeard
我尝试了两种方法,但都不起作用。 - FreaX
@FreaX,你得到的第二个链接非常有帮助。看看我的回答,了解如何在你的项目中正确使用它。 - Yotam Salmon
是的,现在我知道了。第一次时代码不可见! - FreaX
2个回答

12
你可以使用 Shell32.dll Windows程序集来完成这个任务。
只需将引用添加到 C:\Windows\System32\Shell32.dll,然后进入引用属性,在 Embed Interop Types 旁边放置一个 False (因为你要使用的类是交互式的 ShellClass)。
现在,它就像这样简单了:
Shell32.ShellClass objShel = new Shell32.ShellClass();
objShel.ToggleDesktop();

1
请注意,您需要在STA线程上运行,否则会出现奇怪的异常。 - Derek
我找不到Shell32.ShellClass的文档。 - Dee
@Yotam 在PowerShell中如何使用DllImport和Shell32.ShellClass? - Dee

3

同样适用于 Windows 8.1(已测试):

添加 COM 引用到 "Microsoft Shell Controls and Automation"
(c:\windows\system32\shell32.dll)

然后:

using Shell32;

Shell shellObject = new Shell();
shellObject.ToggleDesktop(); // WinXp: ((Shell32.IShellDispatch4)shellObject).ToggleDesktop();

适用于Win10 1909。 - Elliot Huffman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接