Ich versuche, eine "Show" -Schaltfläche in meiner Anwendung zu erstellen. Ich möchte, dass Windows Explorer entweder in den ausgewählten Ordner geöffnet wird oder in den Ordner geöffnet und die ausgewählte Datei hervorgehoben wird.Ordner öffnen oder ausgewählte Datei in einer einzigen, verwendbaren Instanz
Ich weiß, Process.Start ("explorer.exe", Dateiname) tut dies, aber es öffnet sich in einer Version von Explorer, die nicht navigiert werden kann. Wenn Sie zum Beispiel 'Verzeichnis nach oben' drücken, öffnet sich ein neues Fenster.
Der Code, den ich unten habe, tut alles, was ich will, außer, wenn der Pfad eine Datei ist, öffnet er jedes Mal, wenn auf die Schaltfläche geklickt wird, eine neue Fensterinstanz. Wenn es sich bei dem Pfad um einen Ordner handelt, wird ein bereits vorhandenes Fenster geöffnet, sofern eines in diesem Pfad vorhanden ist.
Ich hoffe, ich kann die gleiche Funktionalität für die Dateiauswahl haben. Aber ich kann nicht herausfinden, wie es geht.
Alle und alle Hilfe wird geschätzt!
static void OpenInWin(string path) {
path = path.Replace("/", "\\");
ProcessStartInfo pi = new ProcessStartInfo("explorer.exe") {
WindowStyle = ProcessWindowStyle.Normal,
UseShellExecute = true
};
if (Directory.Exists(path)) { // We are opening a directory
pi.FileName = path;
pi.Verb = "open";
} else {
pi.Arguments = "/select, \"" + new FileInfo(path).FullName + "\"";
}
try {
Process.Start(pi);
} catch(Exception e) {
UnityEngine.Debug.Log(e);
}
}
Hey verwenden! Danke dafür. Leider kann ich es nicht testen, da ich Unity verwende, von dem ich denke, dass es nur .net 2.0 verwendet? Und es scheint, als ob System.Windows später kam? – stuntboots
Mein Kommentar gestern (nach dem Verständnis des Problems) ist deine Antwort heute, nette;) @stuntboots System.Windows kam weit vor Unity. Ich habe die Antwort bearbeitet, um Ihnen zu zeigen, wie Sie wichtige Ereignisse ohne Windows Forms Context erzeugen können. –
@stuntboots Wenn Sie zu Unity 5 wechseln, können Sie .Net 3.5 verwenden – Antony