In meiner Anwendung Auswahl kann ich programmatisch Explorer öffnen und wählen Sie den folgenden Code, um eine Datei mit:Programmatically Datei im Explorer
void BrowseToFile(LPCTSTR filename)
{
CString strArgs;
strArgs = _T("/select,\"");
strArgs += filename;
strArgs += _T("\"");
ShellExecute(0, _T("open"), _T("explorer.exe"), strArgs, 0, SW_NORMAL);
}
Mein Problem ist, dass, wenn ich nenne diese Funktion ein zweites Mal mit einer anderen Datei, aber Im selben Ordner ändert sich die Auswahl im Explorer nicht in die neue Datei, sondern in der vorherigen Datei. Wenn ich beispielsweise meine Funktion mit C:\path\to\file1.txt
aufrufen, öffnet sich ein neues Explorer-Fenster und file1.txt
wird ausgewählt. Wenn ich meine Funktion ein zweites Mal mit C:\path\to\file2.txt
aufrufen, wird das vorhandene Explorer-Fenster aktiviert, aber die Auswahl bleibt weiterhin auf file1.txt
.
Gibt es eine Möglichkeit, Explorer zu zwingen, die Auswahl zu aktualisieren oder einen besseren Weg, dies zu erreichen?
EDIT:
Die oben erwähnte war Verhalten unter Windows XP. Es scheint, dass das Verhalten auf Vista/Win7 anders ist. Bei jedem Aufruf wird eine neue Instanz des Explorers geöffnet und die Datei ausgewählt.
Mein Hauptziel ist es, die Visual Studio-Option auf Open Containing Folder eines Dokuments zu replizieren. Diese Funktion in Visual Studio verhält sich unter XP, Vista und Win7 identisch. Es wird keine neue Instanz erstellt, wenn bereits eine andere Instanz mit demselben Ordner geöffnet ist. Die Auswahl wird jedoch auf die neue Datei aktualisiert.
Wenn jemand weiß, wie Visual Studio dies erreicht, würde ich gerne darüber wissen.
Ich sehe dieses Verhalten nicht auf Windows 7 x64. Zwei Fenster werden korrekt geöffnet, wobei jeweils die richtige Datei ausgewählt ist. –
Sie haben Recht, das Verhalten auf Vista und Win 7 ist anders. Ich habe meine Frage aktualisiert, um dies zu erwähnen. – flashk
http://stackoverflow.com/questions/4831101/how-to-re-use-existing-ready-opened-windows-explorer-window-to-launch-explorer und http://stackoverflow.com/questions/8182494/how-can-i-set-ein-existing-explorer-exe-instance-to-select-a-file scheint verwandt zu sein ... – rogerdpack