Как минимизировать все приложения кроме моего? - PullRequest
0 голосов
/ 24 ноября 2011

Я хочу свести к минимуму все приложения, работающие в системе, кроме моего. Как я могу это сделать?

Я использовал этот код, но он работает только на некоторых компьютерах:

procedure MinAllWnd_ByShell;
VAR IntHwnd: Integer;
begin
 IntHwnd:= FindWindow('Shell_TrayWnd', nil);
 PostMessage(IntHwnd, WM_COMMAND, 419, 0);
end;

тогда

procedure TFrmMain.btnMinimizeAll_Click(Sender: TObject);
begin
 { Send MINIMIZE message }
 MinAllWnd_ByShell;                                                            { This sends a message to Windows. Windows sends the minimize signal back to us after a delay }
 Delay(150);                                                                   { We wait few miliseconds to receive the message in our message queue }
 Application.ProcessMessages;                                                  { By now we should have received the message so we process the queue. }

 { Now self restore }
 BringToFront;
 ShowWindow(frmMain.Handle, SW_RESTORE);
end;

.


Delphi XE / Win XP / Win 7

1 Ответ

3 голосов
/ 24 ноября 2011

Я не говорю, что это хорошая идея, но вы можете попробовать заменить 419 на смоделированный Win + M:

keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(ord('M'), 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...