如何在Windows资源管理器中打开文件夹?
本文关键字:文件夹 资源管理器 Windows | 更新日期: 2023-09-27 18:11:05
我不需要任何类型的接口。我只需要该程序是一个.exe
文件,打开一个目录(如。F:) .
在C#
中您可以这样做:
Process.Start(@"c:'users'");
当文件夹不存在时,这一行将抛出Win32Exception
。如果您使用Process.Start("explorer.exe", @"C:'folder'");
,它将打开另一个文件夹(如果您指定的文件夹不存在)。
所以如果你想在文件夹存在时只打开,你应该这样做:
try
{
Process.Start(@"c:'users22222'");
}
catch (Win32Exception win32Exception)
{
//The system cannot find the file specified...
Console.WriteLine(win32Exception.Message);
}
创建批处理文件,例如open.bat
写这行
%SystemRoot%'explorer.exe "folder path"
如果你真的想用c#
class Program
{
static void Main(string[] args)
{
Process.Start("explorer.exe", @"C:'...");
}
}
使用ShellExecuteEx
API和SHELLEXECUTEINFO
中记录的explore
谓词。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct SHELLEXECUTEINFO
{
public int cbSize;
public uint fMask;
public IntPtr hwnd;
[MarshalAs(UnmanagedType.LPTStr)]
public string lpVerb;
[MarshalAs(UnmanagedType.LPTStr)]
public string lpFile;
[MarshalAs(UnmanagedType.LPTStr)]
public string lpParameters;
[MarshalAs(UnmanagedType.LPTStr)]
public string lpDirectory;
public int nShow;
public IntPtr hInstApp;
public IntPtr lpIDList;
[MarshalAs(UnmanagedType.LPTStr)]
public string lpClass;
public IntPtr hkeyClass;
public uint dwHotKey;
public IntPtr hIcon;
public IntPtr hProcess;
}
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo);
private const int SW_SHOW = 5;
public static bool OpenFolderInExplorer(string folder)
{
var info = new SHELLEXECUTEINFO();
info.cbSize = Marshal.SizeOf<SHELLEXECUTEINFO>();
info.lpVerb = "explore";
info.nShow = SW_SHOW;
info.lpFile = folder;
return ShellExecuteEx(ref info);
}
像Process.Start("explorer.exe", folder);
这样的代码实际上是在说"将命令字符串explorer.exe [folder]扔到shell的命令解释器中,并期待最好的结果"。如果shell决定Microsoft的Windows资源管理器是应该运行的程序,并且它按照您的想法解析(可能未转义的)folder参数,那么这可能会在指定的文件夹中打开一个资源管理器窗口。
简而言之,带有explore
动词的ShellExecuteEx
被记录为您想要做的事情,而以参数开始的explorer.exe
恰好有相同的结果,在最终用户系统上的一堆假设为真的条件下。
希望您正在寻找FolderBrowserDialog
,如果是这样,以下代码将帮助您:
string folderPath = "";
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
folderPath = folderBrowserDialog1.SelectedPath ;
}
或者如果你想通过代码打开我的电脑,那么下面的选项将会帮助你:
string myComputerPath = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
System.Diagnostics.Process.Start("explorer", myComputerPath);