C# 打开指定路径文件

我用了以下代码:
private string filename = Path.GetDirectoryName(Application.ExecutablePath) + "\\config.dat"; //配置文件全路径
然后再按钮点击触发事件中使用:
Process.Start("explorer.exe", "/select, " + filename); //打开指定文件
但是打开的只是指定路径下的文件夹,然后选中了要打开的文件,需要再双击文件才能打开。如何才能一点击按钮便能直接打开文件? 急求。。。。

第1个回答  2013-02-20
Process.Start(filename);
这个就是让系统使用默认的程序打开你指定的文件。
Process.Start("cmd.exe", filename);

这个是使用指定的程序打开你指定的文件。
第2个回答  2013-02-20
改为:
Process.Start("explorer.exe", filename);

Process.Start("cmd.exe", filename);
不知行不行,未试过,你试试吧。
如果不行,再试试:
Process.Start(filename);追问

嗯,可以的,刚刚提交问题后我自己也试着用了下,Process.Start("explorer.exe", filename);好像可行的,谢谢啦。。。 但是有个问题,我可以用这样的方法打开比如Pdf之类的文件吗?

第3个回答  2019-10-08
收藏了这个问题
第4个回答  2013-02-20
请问你的config.dat文件希望用什么程序打开,记事本?还是特定的文本编辑器?追问

记事本。

追答

Process.Start("notepad.exe", @"XXXXXXXX\config.dat");

追问

那要是需要打开pdf文件呢?

追答

找到对应的exe就可以了
"XXXXXXXX\config.dat"这个文件找不到对应的可执行程序,所以需要你来制定
如果是Pdf文件,而你又安装了Pdf文件相关的程序的话,可以直接运行这个pdf文件
Process.Start(@"XXXXXXXX\config.pdf");

第5个回答  推荐于2017-11-25
比如说我要启动E盘的一个office文件
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
//info.WorkingDirectory = Application.StartupPath;
info.FileName = @"e:\测试.docx";
info.Arguments = "";
try
{
System.Diagnostics.Process.Start(info);
}
catch (System.ComponentModel.Win32Exception we)
{
MessageBox.Show(this, we.Message);
return;
}追问

这个看起来比较高级,没用过,但是我想问的是如果路径不能写死,也就是说这配置文件要随着我的可执行文件一起打包,跟可执行文件路径绑定在一起,该怎么做?

追答

在路径中加上你的可执行文件路径就行了,但是刚没注意你的代码有个问题,你要启动的是一个dat文件,在大多数电脑上,dat默认是没有关联的,所以也没法启动,如果你是想用记事本来打开那个dat,代码要改为(假定你的dat是跟exe在同一目录下)
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
info.WorkingDirectory = Application.StartupPath;
info.FileName = "notepad.exe";
info.Arguments =Application.StartupPath + @"\config.dat";

try
{
System.Diagnostics.Process.Start(info);
}
catch (System.ComponentModel.Win32Exception we)
{
MessageBox.Show(this, we.Message);
return;
}

追问

嗯,非常感谢,对了,再打扰下,要是需要打开PDF文件,notepad.exe需要改成什么?

追答

后面这种,是对于没有关联的文件,指定某个程序(比如记事本)去打开一个文件用的,对于pdf(如果你指的pdf是那种普通的电子书格式的话),一般电脑上应该有安装有pdf阅读器的,所以用前一种
info.FileName = Application.StartupPath + @"\test.pdf";
info.Arguments = "";
当然这种情况下,如果用户没有安装某种pdf阅读器,比如福昕或者adobe reader的话,一样是会弹出无法打开那种提示的。如果想完美一点,因为Foxit Reader有单文件的,可以打包一个放在你的程序中,调用的时候就可以(它的exe我记不清了,假定是foxit.exe,跟你的exe放在同一目录)
info.WorkingDirectory = Application.StartupPath;
info.FileName =Application.StartupPath + @"\foxit.exe";
info.Arguments =Application.StartupPath + @"\test.pdf";

本回答被提问者采纳
相似回答