在 WPF 应用程序中,当用户单击一个按钮时,我想打开某个目录的文件资源管理器,我该如何做呢?
我想会是这样的:
Windows.OpenExplorer("c:\test");
你可以使用 System.Diagnostics.Process.Start。
System.Diagnostics.Process.Start
或者将 WinApi 直接与下面这样的命令一起使用,它将启动 Explorer. exe。可以使用 ShellExecute 的第四个参数为它提供一个起始目录。
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); }
声明来自 Pinvoke.net 网站。
为什么不是 Process.Start(@"c:\test");?
Process.Start(@"c:\test");
这应该会奏效:
Process.Start(@"<directory goes here>")
或者如果你想要一个方法来运行程序/打开文件和/或文件夹:
private void StartProcess(string path) { ProcessStartInfo StartInformation = new ProcessStartInfo(); StartInformation.FileName = path; Process process = Process.Start(StartInformation); process.EnableRaisingEvents = true; }
然后调用该方法,并在括号中放入文件和/或文件夹的目录或应用程序的名称。希望这个有用!
Process.Start("explorer.exe" , @"C:\Users");
我必须使用这个,另一种指定 tgt dir 的方法是在应用程序终止时关闭资源管理器窗口。
以下是对我有效的方法:
基本上使用命令行调用“ start C:/path” 然后退出终端,所以“ start c:/path & & exit”
WindowsExplorerOpen(@"C:/path"); public static void WindowsExplorerOpen(string path) { CommandLine(path, $"start {path}"); } private static void CommandLine(string workingDirectory, string Command) { ProcessStartInfo ProcessInfo; Process Process; ProcessInfo = new ProcessStartInfo("cmd.exe", "/K " + Command + " && exit"); ProcessInfo.WorkingDirectory = workingDirectory; ProcessInfo.CreateNoWindow = true; ProcessInfo.UseShellExecute = true; ProcessInfo.WindowStyle = ProcessWindowStyle.Hidden; Process = Process.Start(ProcessInfo); Process.WaitForExit(); }
这些对我都不管用:
Process.Start(@"c:\test"); Process.Start("explorer.exe" , @"C:\Users");