我正在设计一个用户做出手势的系统,然后我的程序捕获它(使用网络摄像头),我的程序在规则系统(基于XML)中查找,这是它必须执行的操作。 / p>
好的,一旦我解释了背景,我想知道如何让我的程序“执行”Show Desktop按钮。我想为用户提供做手势和显示桌面的可能性。可能吗?我一直在寻找执行Show Desktop按钮的程序(.exe),我担心它不存在。
答案 0 :(得分:7)
从this MSDN blog post(2004年但仍然有效),您必须致电ToggleDesktop().
:
// Create an instance of the shell class
Shell32.ShellClass objShel = new Shell32.ShellClass();
// Show the desktop
((Shell32.IShellDispatch4) objShel).ToggleDesktop();
// Restore the desktop
((Shell32.IShellDispatch4) objShel).ToggleDesktop();
修改强>
C ++版本:
#include <Shldisp.h>
CoInitialize(NULL);
// Create an instance of the shell class
IShellDispatch4 *pShellDisp = NULL;
HRESULT sc = CoCreateInstance( CLSID_Shell, NULL, CLSCTX_SERVER, IID_IDispatch, (LPVOID *) &pShellDisp );
// Show the desktop
sc = pShellDisp->ToggleDesktop();
// Restore the desktop
sc = pShellDisp->ToggleDesktop();
pShellDisp->Release();
答案 1 :(得分:4)
来自http://www.codeguru.com/forum/showthread.php?t=310202:
#define MIN_ALL 419
#define MIN_ALL_UNDO 416
int main(int argc, char* argv[])
{
HWND lHwnd = FindWindow("Shell_TrayWnd",NULL);
SendMessage(lHwnd,WM_COMMAND,MIN_ALL,0); // Minimize all windows
Sleep(2000);
SendMessage(lHwnd,WM_COMMAND,MIN_ALL_UNDO,0); // Bring all back up again.
return 0;
}
希望它有所帮助。它至少做了应有的事情,最小化了所有的窗口。显示桌面。
答案 2 :(得分:3)
您需要致电ToggleDesktop。
答案 3 :(得分:1)
在Windows中,您可以复制脚本:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
进入文件“somefile.scf”并通过手动执行“somefile.scf”从shell调用它。这也可以用C ++实现。