W aplikacji WPF, gdy użytkownik kliknie przycisk Chcę otworzyć eksplorator Windows w określonym katalogu, jak mam to zrobić?
Spodziewałbym się czegoś takiego:
Windows.OpenExplorer("c:\test");
W aplikacji WPF, gdy użytkownik kliknie przycisk Chcę otworzyć eksplorator Windows w określonym katalogu, jak mam to zrobić?
Spodziewałbym się czegoś takiego:
Windows.OpenExplorer("c:\test");
Odpowiedzi:
Dlaczego nie Process.Start(@"c:\test");
?
Start(dir)
i Start("explorer.exe", dir)
polega na tym, że to pierwsze będzie wystarczająco inteligentne, aby skupić się na istniejącym oknie, dir
jeśli takie istnieje, podczas gdy drugie za każdym razem otwiera nowe okno.
To powinno działać:
Process.Start(@"<directory goes here>")
Lub jeśli potrzebujesz metody uruchamiania programów / otwierania plików i / lub folderów:
private void StartProcess(string path)
{
ProcessStartInfo StartInformation = new ProcessStartInfo();
StartInformation.FileName = path;
Process process = Process.Start(StartInformation);
process.EnableRaisingEvents = true;
}
Następnie wywołaj metodę iw nawiasie umieść tam katalog pliku i / lub folder albo nazwę aplikacji. Mam nadzieję, że to pomogło!
Możesz użyć System.Diagnostics.Process.Start
.
Lub użyj bezpośrednio WinApi z czymś podobnym do następującego, co spowoduje uruchomienie explorer.exe. Możesz użyć czwartego parametru ShellExecute, aby nadać mu katalog początkowy.
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);
}
Deklaracje pochodzą ze strony pinvoke.net .
Process.Start("explorer.exe" , @"C:\Users");
Musiałem tego użyć, inny sposób określenia katalogu tgt spowodowałby zamknięcie okna eksploratora po zakończeniu działania mojej aplikacji.
Access denied
wyjątku.
Process.Start("calc.exe");
uruchomi Kalkulator. Możesz przekazać mu pełną ścieżkę do pliku wykonywalnego i uruchomi go.