Gestarteter Windows Explorer
Hallo,
wie kann ich von einem Delphi-Programm aus feststellen, ob der Windows Explorer gestartet ist (egal, in welchem Fenster/Ordner der sich gerade befindet) ? Danke Günther |
Re: Gestarteter Windows Explorer
Das einfachste, was mir z.Z. einfällt wäre folgendes:
Delphi-Quellcode:
if FindWindow('CabinetWClass',nil)<>0 then ShowMessage('Offen') else
ShowMessage('zu'); |
Re: Gestarteter Windows Explorer
War das nicht "ExploreWClass"? Ich überlege nämlich schon die ganze Zeit. :?
|
Re: Gestarteter Windows Explorer
hab grad nachgesehen - bei mir ist es "ExploreWClass"
|
Re: Gestarteter Windows Explorer
Zum sichergeben, kann man auch nochmal diesen Code benutzen und prüfen, ob das Handle zu "explorer.exe" gehört.
@MathiasSimmack: Laut Simon Reinhardts Fensterliste ist es CabinetWClass. // Edit: Vielleicht liegt's an den Systemen ich verwende XP HE. |
Re: Gestarteter Windows Explorer
bei mir ist es auch "ExploreWClass", grad ausprobiert
|
Re: Gestarteter Windows Explorer
Zitat:
2. Ich glaube, "CabinetWClass" gibt es auch. Aber das könnte evtl. die Klasse eines anderen Fensters sein (Systemsteuerung?), denn die Netzwerkumgebung hat (obwohl es prinzipiell ja auch ein Explorer-Fenster ist) IMHO auch einen anderen Namen. |
Re: Gestarteter Windows Explorer
Zitat:
Also ich hab jetzt nochmal geguckt. Egal ob Systemsteuerung, Netzwerkumgebung, Laufwerk oder Verzeichnis - bei mir ist es immer CabinetWClass :| |
Re: Gestarteter Windows Explorer
Am zuverlaessigsten ist es zu pruefen ob GetShellWindow() einen Fensterhandle zurueckliefert. wenn die funktion 0 zurueckgibt, laeuft keine Shell. Der Vorteil ist, dass das auch mit alternativen Shells funktioniert.
|
Re: Gestarteter Windows Explorer
Ich glaube es ging hier aber mehr um das Explorerfenster als Dateibrowser. Ansonsten wäre das natürlich der bessere Weg.
|
Re: Gestarteter Windows Explorer
Hallo,
vielen Dank - mit dem ExploreWClass funktioniert das bei mir schon recht gut. Vielleicht kann mir jemand noch dabei helfen, den laufenden Windows-Explorer (als Dateiexplorer gestartet) zu beenden. Evetuell kann es auch sein, dass der Explorer mehrfach geöffnet wurde und in verschiedenen Verzeichnissen steht. Danke Günther |
Re: Gestarteter Windows Explorer
ExploreWClass - Wenn "Windows-Explorer" über Verknüpfung gestartet wird, oder explorer.exe ohne Parameter
CabinetWClass - Wenn Ordnerinhalt angezeigt wird, z.B. über Arbeitsplatz. EDIT: Explorer beenden:
Delphi-Quellcode:
var
wnd : HWND; begin wnd := FindWindow('ExploreWClass', nil); If wnd <> 0 then begin ShowMessage(IntToStr(wnd)); PostMessage(wnd, WM_CLOSE, 0, 0); end; end; |
Re: Gestarteter Windows Explorer
Zitat:
|
Re: Gestarteter Windows Explorer
Zitat:
|
Re: Gestarteter Windows Explorer
Hallo,
ich habe den folgenden Code in mein Programm eingebaut, aber leider bleiben die beiden gestarteten Explorer (die in verschiedenen Verzeichnissen stehen) offen. if FindWindow ('ExploreWClass',nil) <> 0 then begin wnd := FindWindow('ExploreWClass', nil); If wnd <> 0 then PostMessage(wnd, WM_CLOSE, 0, 0); end; Woran kann das liegen ? Günther |
Re: Gestarteter Windows Explorer
Moin Günther,
da ich mal annehme, dass Du kontrolliert hast, dass die PostMessage Zeile überhaupt aufgerufen wird... ;-) Probier's mal mit WM_SYSCOMMAND und SC_CLOSE. |
Re: Gestarteter Windows Explorer
Abgesehen davon wird er mit dem gezeigten Befehl vermutlich nur einen der beiden Explorer schließen (wenn er ihn nicht mehrfach aufruft). Darum ja auch der Hinweis auf "EnumWindows".
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz