Inhalt des Pfades aus Explorer


CopWorker

Mitglied
Hallo zusammen,,

gerade versuche ich alle geöffneten Datei Explorer zur ermitteln und bei jedem die Text (Verzeichnispfad) aus der Adresszeile auszulesen.
Ich will verhindern, dass ich mehrmals den Explorer mit gleichem Text in der Adresszeile öffne.

Ich habe sogar schon einen Entwurf.

C#:
public string strPath = @"c:\Data\FtpLog\FtpClient";

public bool CheckOpenFolders(string strPath)
{
    bool BRet = false;
    
    foreach (Process p in Process.GetProcessesByName("explorer"))
    {
        if (p.MainWindowTitle.Equals(strPath))
        {
            BRet = true;
            break;
        }
    }

    return BRet;
}
Und noch einen zweiten.
C#:
 public bool CheckOpenFolders(string strPath)
{
    bool BRet = false;

    System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("EXPLORER");

    foreach (System.Diagnostics.Process proc in procs)
    {
        if (proc.MainWindowTitle.Contains(strPath))
        {
            BRet = true;
        }
    }

    return BRet;
}
Leider werden in der Schleife (foreach....) nicht alle Prozesse in denen ein Explorer ausgeführt wird durchlaufen.
Und dann kann ich nur den Titel des Prozesses auslesen.

Frage: Wie komm ich erstmal an alle Prozesse (Explorer) ran.
Und wir komme ich an den Text ran der in der Adresszeile (Verzeichnispfad) steht.

Vielen Dank im Voraus.
Grüße von CopWorker
 

ComFreek

Mod | @comfreek
Moderator
Ich will verhindern, dass ich mehrmals den Explorer mit gleichem Text in der Adresszeile öffne.
Das Problem kenn ich auch nur zu gut :) Das ist ja klasse!

Leider werden in der Schleife (foreach....) nicht alle Prozesse in denen ein Explorer ausgeführt wird durchlaufen.
Ich habe gerade bei mir zwei Explorerfenster aufgemacht und im Task Manager geschaut:

1579631627130.png

Tatsächlich also nur 1 Prozess. Rechtsklick und dann "Warteschlange analysieren" zeigt zwei Threads.

Ich vermute, dass du pro explorer.exe Prozess auch noch ein "get all windows for that process" machen möchtest. Wie genau das geht, kann ich dir nicht sagen, aber das kannst du sicher googeln :)
 

Spyke

Premium-User
Ma ne Frage, warum will man sowas verhindern?
Wieso wird überhaupt so Ordner geöffnet?
Was gibts da für Anwendungsbeispiele???
 

ComFreek

Mod | @comfreek
Moderator
Angenommen du hast ein Fenster mit Pfad A\B und ein Fenster mit Pfad A. Wenn du im zweiten Fenster zu A\B navigierst, soll es dann geschlossen werden? Das wäre eine komische UX, zumindest wenn sie die Standard-UX wäre.
 

Spyke

Premium-User
Mir fehlt der Fall warum man das übern Explorer direkt macht, vorallem da ich auch einige kenne die den Explorer sogar verteufeln und TotalCommander oder dergleichen verwenden.

Aber will den Thread hier auch nicht zu spammen, hatte mich nur gefragt warum man so direkt quasi Kontrolle über den Explorer will/braucht.

P.S.:
Hab ma kurz im Visual Studio "Open Folder in File Explorer" gemacht, der öffnet auch einfach immer ein neues Fenster im Explorer mit gleichem Pfad.
 

CopWorker

Mitglied
Hallo,

vielen Dank an alle die sich der Sache annehmen.
Der Hintergrund ist folgender.
Ich schreibe gerade an einem Assistenten mit dem ich ein anderes Programm auf einem PC einrichten kann. Diese andere Programm benötigt eine Menge an Konfiguration und Einstellungen die wiederum aus Konfigurationsdateien (*.ini, *.cfg, app.config usw.) stammen. Um an diese Dateien ranzukommen ist es möglich über den Assistenten diese Pfade der Verzeichnisse zu den Konfigurationsdateien zu öffnen.
Da aber der Verzeichnispfad zu den vielen Dateien oft der gleiche ist wird jedes mal ein neues Explorer Fenster geöffnet. Am Schluss sind es über 30. Obwohl 5 oder 6 geöffnete Explorer Fenster ausreichen.
Man kann jetzt darüber diskutieren ob das Sinn macht. Ich denke mal das ist professionell.
Wir ein Verzeichnispfad geöffnet obwohl dieser schon geöffnet ist wäre es schön nur den Fokus auf das Explorer Fenster zu legen, anstatt den Explorer ein weiters mal zu öffne.

Vielen Dank.
CopWorker
 

Spyke

Premium-User
ah ok,
ich persönlich würde die Dateien dann direkt in einem WinForms oder WPF Fenster auflisten und wenn dort draufgeklickt wird mittels Process.Start diese aufrufen
 

Neue Beiträge