Wie kann ich eine vorhandene Explorer.exe-Instanz zum Auswählen einer Datei festlegen?

8

Ich kann den Explorer leicht dazu bringen, eine Datei zu öffnen und auszuwählen, indem ich Folgendes benutze:

%Vor%

Wenn ich jedoch die nächste Datei öffne, erhalte ich eine neue Explorer-Instanz. Dies könnte dazu führen, dass unsere Benutzer am Ende eines intensiven Tages Hunderte von Entdeckern öffnen.

Wie kann ich eine bereits geöffnete Explorer-Instanz wiederverwenden, um die gewünschte Datei auszuwählen?

Visual Studio kann dies tun, wenn Sie mit der rechten Maustaste auf eine Registerkarte klicken und Geöffneten Ordner anzeigen ... auswählen, vorausgesetzt, dass der Explorer bereits im selben Verzeichnis geöffnet ist. Wie ist es dazu in der Lage gewesen?

    
Mongus Pong 18.11.2011, 12:33
quelle

4 Antworten

3

Wie wäre es mit einer Einbettung des Explorer-Fensters in Ihre Anwendung ? das Objekt ExplorerBrowser ? Auf diese Weise können Sie das Fenster einfach weiterverwenden, indem Sie IExplorerBrowser::BrowseToObject in einem anderen Ordner aufrufen Sie möchten einen anderen Ordner anzeigen.

Der Versuch, ein vorhandenes Explorer-Fenster zu reaktivieren, ist problematisch, weil Sie nicht wissen, was der Benutzer mit diesem Fenster gemacht hat, während Sie nicht gesucht haben. Vielleicht haben sie den Folder-Bereich benutzt, um in einen anderen Ordner zu wechseln, und dann haben Sie den Ordner einfach aus dem Ordner gerissen und an einen anderen Ort geschickt. Oder vielleicht haben sie es geschlossen! Das Öffnen eines neuen Explorer-Fensters ist ein Feuer-und-Vergessen-Vorgang. Wenn Sie die Kontrolle über das Fenster behalten möchten, müssen Sie eine explizitere Kontrolle ausüben (z. B. über ExplorerBrowser oben).

    
Raymond Chen 18.11.2011, 15:05
quelle
1

Etwas spät zur Party, aber wenn Sie eine oder mehrere Dateien in einem Ordner auswählen möchten, der bereits in einem Explorer-Fenster geöffnet wurde, können Sie dies mit der Shell32-Methode SHOpenFolderAndSelectItems tun. Diese Methode verwendet ein vorhandenes Fenster erneut oder öffnet andernfalls ein neues.

%Vor%

Dieses Beispiel wählt nur eine Datei aus, kann aber leicht erweitert werden, um mehrere Dateien auszuwählen.

    
domi1819 18.05.2017 09:33
quelle
0

Haben Sie versucht, eine Instanz der Klasse Process zu erhalten und immer die Methode Start() aufzurufen?

%Vor%     
Widor 18.11.2011 12:44
quelle
0

Ein anderer Ansatz ist der Win32-API-Weg.

%Vor%

// Set the focus to the address field

%Vor%     
Alex 18.11.2011 13:55
quelle

Tags und Links