2017-01-11 19 views
3

Я программирую приложение Windows Form, и мне нужно программно вернуться на рабочий стол.Программно показать рабочий стол

Я попробовал этот код, но он не работает:

using System; 
using System.Windows.Forms; 

private void ToggleDesktop() { 

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

} 

Есть ли возможность сделать это?

+0

http://stackoverflow.com/questions/10009623/c-keeping-window-visible-through-show -desktop-wind – Hackerman

+0

https://blogs.msdn.microsoft.com/robgruen/2004/02/24/programmatically-showing-the-desktop-toggledesktop/ – Blorgbeard

+0

Я пробовал оба, но не работает – FreaX

ответ

5

Вы можете использовать сборку окон Shell32.dll, чтобы сделать это.

Просто добавьте ссылку на C:\Windows\System32\Shell32.dll, а затем перейти к справочным свойств и поставить False вблизи Embed Interop Types (так как класс вы собираетесь использовать это ShellClass, что Interop.

Теперь это так просто, как

Shell32.ShellClass objShel = new Shell32.ShellClass(); 
objShel.ToggleDesktop(); 
+0

Спасибо за сообщение. Это мне очень помогло! ;) – FreaX

+0

Должен быть способ .NET для этого ... –

1

Также возможно (протестировано под ОС Windows 8.1):

Добавить ссылку на COM "управления Microsoft Shell и автоматизации"
(C: \ WINDOWS \ system32 \ shell32.dll)

Тогда:

using Shell32; 

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