Thema: Delphi Wm_syscommand

Einzelnen Beitrag anzeigen

Amd

Registriert seit: 16. Jan 2005
38 Beiträge
 
#1

Wm_syscommand

  Alt 2. Okt 2005, 22:26
Hallo...
Mit dieser Funktion kann ich alle geöffneten Fenster auf einmal schließen.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
h: HWnd;
begin
h := handle;
while h > 0 do
begin
ShowWindow(FindWindow(nil,'GetDesktopWindow'),SW_SHOW);
if isWindowVisible(h) then
postmessage(h, WM_SYSCOMMAND, SC_ClOSE, 0);
h := getnextwindow(h, GW_HWNDNEXT);
end;
end;
Klappt soweit auch, nur wenn ich mir zwischendurch den Desktop anzeigen lasse, mit dem "Desktop anzeigen-Button" in der Taskleisteund dann den Button in meinem Programm nochmal drücke, verschwindet der Dektop auf nimmer Wiedersehen.

Kann man den Desktop irgendwie ausschließen?

Habe es dann nochmal so versucht, klappt aber auch nicht.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
h, b: HWnd;
begin
h := handle;
while h > 0 do
begin
ShowWindow(FindWindow(nil, 'GetDesktopWindow'), SW_SHOW);
if isWindowVisible(h) then
postmessage(h, WM_SYSCOMMAND, SC_ClOSE, 0);
h := getnextwindow(h, GW_HWNDNEXT);
end;
b := handle;
while b > 0 do
begin
ShowWindow(FindWindow(nil, 'Progman'), SW_SHOW);
if isWindowVisible(b) then
exit;
end;
end;
Grüße
  Mit Zitat antworten Zitat