![]() |
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) ; |
Re: Programm aus Taskleiste ausblenden
Zitat:
Müsste das nicht eher
Delphi-Quellcode:
heißen?
WindowStyle := WindowStyle and (not WS_ICONIC);
mfG mirage228 |
Re: Programm aus Taskleiste ausblenden
Zitat:
|
Re: Programm aus Taskleiste ausblenden
Moin Union,
bei Bitmasken sollte man grundsätzlich nicht mit + oder - arbeiten, weil man sich damit viel zu leicht Fehler einhandeln kann. |
Re: Programm aus Taskleiste ausblenden
SO hab jetzt folgenden Code geproggt:
Delphi-Quellcode:
Jedoch passiert nicht das was ich will, bzw. es passiert garnix.
procedure TForm1.Button1Click(Sender: TObject);
var Handle: HWND; WindowStyle : Integer; begin Handle:=GetWindow(GetDesktopWindow(),GW_CHILD); while (Handle<>0) do begin if (IsMainAppWindow(Handle) and (AnsiContainsStr(GetWindowCaption(Handle),'Unbenannt - Paint'))) then begin //WindowStyle := GetWindowLong(handle, GWL_STYLE); //WindowStyle := WindowStyle and (not WS_ICONIC) ; SetWindowLong(handle, GWL_STYLE, (GetWindowLong(Handle, GWL_STYLE) and (not WS_ICONIC) )); break; end; Handle:=GetWindow(Handle,GW_HWNDNEXT); end; end; Wie schaffe ich es jetzt, dass ich das gewünschte Programm aus der Taskleiste bringe?? Und noch so ne Frage am Rande! Wie kann ich das Programm dann Refreshen?? |
Re: Programm aus Taskleiste ausblenden
Mich würde eine Lösung auch interessieren...Weiß niemand Rat?
|
Re: Programm aus Taskleiste ausblenden
Liste der Anhänge anzeigen (Anzahl: 1)
So hab des Problem eh schon länger heraus gefunden.....
Naja wie auch immer, ich werd mal einfach ne kleine Anregung hinterher hängen die Zeigt wie des alles funzt. Wenns dann noch fragen gibt oder wenn du noch irgend welche Units brauchst dann einfach hier posten :wink: |
Re: Programm aus Taskleiste ausblenden
Hallöchen,
öhm wollt mir mal gerade den Anhang aus dem letzten Post runterladen und dann kommt follgende Fehlermeldung: "Entschuldigung, aber du bist nicht autorisiert dieses Attachment anzugucken oder herunterzuladen." Hab ich irgendetwas verpasst?! gruß Evian EDIT: Habe gerade gelesen, dass es womöglich an einer Firewall auf meiner Seite liegen könte.. aber mh.. ich habe keine Firewall und bis gestern könnte ich noch ohne Probleme aus der DP downloaden?!?! |
Re: Programm aus Taskleiste ausblenden
Hallo,
also ich interessiere mich dafür, mein Programm aus der Taskleiste auszublenden, wenn stellvertretend dafür ein SystrayIcon angezeigt werden soll, dabei bin ich auch über dein Beitrag gestolpert. Interessant! Problem bei der Geschichte: Unter Vista(?) wird beim minimieren und ausblenden zeitgleich linksunten eine Toolbox erzeugt (bei XP auch?), welche sichtbar ist. :wall: Ich hab auch schon mit abändern der CreateParams Prozeudre probiert, jedoch kommt diese Toolbox immer wieder. Mit dem SysTray funktioniert dagegen alles reibungslos. Hast du in diese Richtung vllt weitere Infos/Lösungsamsätze parrat? Ich hoffe, mir antwortet noch jemand, da dieses Thema ja jetzt schon über 3 Jahre alt ist. Grüße Egac |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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