Выполнение "Show Desktop" из C ++ - PullRequest
8 голосов
/ 05 июля 2011

Я проектирую систему, в которой пользователь делает жест, затем моя программа захватывает его (используя веб-камеру), и моя программа просматривает систему правил (основанную на XML), которые представляют собой действия, которые она должна выполнять.

Хорошо, как только я объясню фон, я хотел бы знать, как я мог заставить мою программу "выполнить" кнопку Показать рабочий стол. Я хотел бы предоставить пользователю возможность сделать жест и показать рабочий стол. Является ли это возможным? Я искал программу (.exe), которая выполняет кнопку Показать рабочий стол, и я боюсь, что не существует.

Ответы [ 4 ]

7 голосов
/ 05 июля 2011

Из этого сообщения в блоге 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();

РЕДАКТИРОВАТЬ

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();   
4 голосов
/ 05 июля 2011

С 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;
}

Надеюсь, это поможет.По крайней мере, он делает то, что должен, минимизирует все окна ака.показывает рабочий стол.

3 голосов
/ 05 июля 2011

Вам нужно позвонить ToggleDesktop .

1 голос
/ 05 июля 2011

В Windows вы можете скопировать скрипт:

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop 

в файл "somefile.scf" и вызовите его из оболочки, выполнив "somefile.scf" вручную. Это также возможно с C ++.

...