![]() |
Programm aus Taskleiste ausblenden
Hi!
Ich wollt Fragen ob es möglich ist, ein Programm wie z.B. den Editor von Windows aus der Taskleiste verschwinden zu lassen. Damit mein ich, dass das Programm noch immer aktive ist, aber halt nicht in der Taskleiste angezeit wird!! Ich bedank mich schonmal im Vorraus |
Re: Programm aus Taskleiste ausblenden
Nu, das geht relativ einfach:
Du saust einfach durch alle Kind-Fenster von GetDesktopWindow() und suchst nach dem Fenster, dessen Text gleich dem Text ist, der auf dem Button in der Taskleiste steht. Außerdem musst du prüfen ob es das MainAppWindow ist (gibts eine Funtion von den Jedis ... ich glaub JclSysInfo.pas). Sind dann beide Bedingungen erfüllt versteckst du es per ShowWindow(Handle,SW_HIDE) |
Re: Programm aus Taskleiste ausblenden
Erstaml danke für die Hilfe :thumb: , aber könntest du mir vielleicht noch ein Beispiel zu der Funktion GetDesktopWindow() posten, alles andere wär mir sonst klar...
|
Re: Programm aus Taskleiste ausblenden
Ich versuchs mal aus dem Kopf ohne Delphi zu bemühen :)
Delphi-Quellcode:
procedure SuchHassoSuch();
var Handle: HWND; begin Handle:=GetWindow(GetDesktopWindow(),GW_CHILD); while (Handle<>0) do begin if (IsMainAppWindow(Handle) and (AnsiContainsStr(GetWindowCaption(Handle),'Editor'))) then begin ShowWindow(Handle,SW_HIDE); break; end; Handle:=GetWindow(Handle,GW_HWNDNEXT); end; end; |
Re: Programm aus Taskleiste ausblenden
einfach mit showwindow das aus der taskleiste zu entfernen funktioniert nur bei Delphi-VCL anwendungen und anderen Anwendungen die ein nicht sichtbares Fenster dafür nutzen. Wenn das Hauptfenster auch das Fenster in der Taskleiste ist geht das nicht. Dann müsstest du mit SetWindowLong den Style ändern damit es kein AppWindow mehr ist (kann sein das man dafür erst in den Prozess muss)
[Edit] WICHTIG: hab grad im MSDN bei SetWindowLong folgendes gelesen: Zitat:
[/Edit] |
Re: Programm aus Taskleiste ausblenden
Noch ne kurze Frage: Was muss ich hinzufügen, dass ich mit IsMainAppWindow , AnsiContainsStr und GetWindowCaption programmieren kann?
|
Re: Programm aus Taskleiste ausblenden
Für die Funktionen "IsMainAppWindow" und "GetWindowCaption" brauchst du die "JclSysInfo" von den Jedis. Für die Funktion "AnsiContainsStr" must du die Unit "StrUtils" usen.
Was das angeht was SirThornberry sagte, war mir von der Sache her neu. Aber in der Funktion "IsMainAppWindow" ist schon folgender Code enthalten:
Delphi-Quellcode:
Damit ist doch auch das geklärt, oder meinst du etwas anderes, SirThornberry?
ExStyle := GetWindowLong(Wnd, GWL_EXSTYLE);
Result := ((ParentWnd = 0) or (ParentWnd = GetDesktopWindow)) and ((ExStyle and WS_EX_TOOLWINDOW = 0) or (ExStyle and WS_EX_APPWINDOW <> 0)); |
Re: Programm aus Taskleiste ausblenden
Er muss mit
![]() ![]() |
Re: Programm aus Taskleiste ausblenden
Könnt ihr mir vielleicht nochmal weiter helfen!!!
Bis jetzt hab ich das:
Code:
procedure SuchHassoSuch();
var Handle: HWND; begin Handle:=GetWindow(GetDesktopWindow(),GW_CHILD); while (Handle<>0) do begin if (IsMainAppWindow(Handle) and (AnsiContainsStr(GetWindowCaption(Handle),'Editor'))) then begin SetWindowLong(Handle, WS_ICONIC,[b]???(und hier fehlt mir der letzte Parameter)[/b]); break; end; Handle:=GetWindow(Handle,GW_HWNDNEXT); end; end; |
Re: Programm aus Taskleiste ausblenden
Zitat:
Erst musst Du mit GetWindowLong den aktuellen Fensterstil holen. Dann das WS_ICONIC Bit entfernen und dann erst mit SetWindowLong den neuen Wert setzen:
Delphi-Quellcode:
WindowStyle := GetWindowLong(handle, GWL_STYLE);
WindowStyle := WindowStyle-WS_ICONIC; SetWindowLong(handle, GWL_STYLE, WindowStyle) ; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz