Wie mache ich das in einer WPF-Anwendung, wenn ein Benutzer auf eine Schaltfläche klickt, mit der ich den Windows Explorer in einem bestimmten Verzeichnis öffnen möchte?
Ich würde so etwas erwarten:
Windows.OpenExplorer("c:\test");
Wie mache ich das in einer WPF-Anwendung, wenn ein Benutzer auf eine Schaltfläche klickt, mit der ich den Windows Explorer in einem bestimmten Verzeichnis öffnen möchte?
Ich würde so etwas erwarten:
Windows.OpenExplorer("c:\test");
Antworten:
Warum nicht Process.Start(@"c:\test");
?
Start(dir)
und Start("explorer.exe", dir)
besteht darin, dass das erstere intelligent genug ist, um das vorhandene Fenster zu fokussieren, dir
wenn es eines gibt, während das letztere jedes Mal ein neues Fenster öffnet.
Das sollte funktionieren:
Process.Start(@"<directory goes here>")
Oder wenn Sie eine Methode zum Ausführen von Programmen / Öffnen von Dateien und / oder Ordnern wünschen:
private void StartProcess(string path)
{
ProcessStartInfo StartInformation = new ProcessStartInfo();
StartInformation.FileName = path;
Process process = Process.Start(StartInformation);
process.EnableRaisingEvents = true;
}
Rufen Sie dann die Methode auf und tragen Sie in Klammern entweder das Verzeichnis der Datei und / oder des Ordners oder den Namen der Anwendung ein. Hoffe das hat geholfen!
Sie können verwenden System.Diagnostics.Process.Start
.
Oder verwenden Sie WinApi direkt mit etwas wie dem folgenden, wodurch explorer.exe gestartet wird. Sie können ShellExecute mit dem vierten Parameter ein Startverzeichnis zuweisen.
public partial class Window1 : Window
{
public Window1()
{
ShellExecute(IntPtr.Zero, "open", "explorer.exe", "", "", ShowCommands.SW_NORMAL);
InitializeComponent();
}
public enum ShowCommands : int
{
SW_HIDE = 0,
SW_SHOWNORMAL = 1,
SW_NORMAL = 1,
SW_SHOWMINIMIZED = 2,
SW_SHOWMAXIMIZED = 3,
SW_MAXIMIZE = 3,
SW_SHOWNOACTIVATE = 4,
SW_SHOW = 5,
SW_MINIMIZE = 6,
SW_SHOWMINNOACTIVE = 7,
SW_SHOWNA = 8,
SW_RESTORE = 9,
SW_SHOWDEFAULT = 10,
SW_FORCEMINIMIZE = 11,
SW_MAX = 11
}
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);
}
Die Erklärungen stammen von der Website pinvoke.net .
Process.Start("explorer.exe" , @"C:\Users");
Ich musste dies verwenden. Die andere Möglichkeit, nur das tgt-Verzeichnis anzugeben, schloss das Explorer-Fenster, wenn meine Anwendung beendet wurde.
Access denied
Ausnahme.
Process.Start("calc.exe");
wird Calculator ausführen. Sie können den vollständigen Pfad an eine ausführbare Datei übergeben, die dann ausgeführt wird.