Oni*_*Oni 8 c++ windows desktop
我正在设计一个用户做出手势的系统,然后我的程序捕获它(使用网络摄像头),我的程序在规则系统(基于XML)中查找,这是它必须执行的操作.
好的,一旦我解释了背景,我想知道如何让我的程序"执行"Show Desktop按钮.我想为用户提供做手势和显示桌面的可能性.可能吗?我一直在寻找执行Show Desktop按钮的程序(.exe),我担心它不存在.
从这篇MSDN博客文章(2004年但仍然有效),你必须打电话ToggleDesktop().
在C#中:
// 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();
Run Code Online (Sandbox Code Playgroud)
编辑
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();
Run Code Online (Sandbox Code Playgroud)
小智 5
来自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;
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。它至少做了它应该做的事情,即最小化所有窗口。显示桌面。