我用了以下代码:
private string filename = Path.GetDirectoryName(Application.ExecutablePath) + "\\config.dat"; //配置文件全路径
然后再按钮点击触发事件中使用:
Process.Start("explorer.exe", "/select, " + filename); //打开指定文件
但是打开的只是指定路径下的文件夹,然后选中了要打开的文件,需要再双击文件才能打开。如何才能一点击按钮便能直接打开文件? 急求。。。。
嗯,可以的,刚刚提交问题后我自己也试着用了下,Process.Start("explorer.exe", filename);好像可行的,谢谢啦。。。 但是有个问题,我可以用这样的方法打开比如Pdf之类的文件吗?
记事本。
追答Process.Start("notepad.exe", @"XXXXXXXX\config.dat");
追问那要是需要打开pdf文件呢?
追答找到对应的exe就可以了
"XXXXXXXX\config.dat"这个文件找不到对应的可执行程序,所以需要你来制定
如果是Pdf文件,而你又安装了Pdf文件相关的程序的话,可以直接运行这个pdf文件
Process.Start(@"XXXXXXXX\config.pdf");
这个看起来比较高级,没用过,但是我想问的是如果路径不能写死,也就是说这配置文件要随着我的可执行文件一起打包,跟可执行文件路径绑定在一起,该怎么做?
追答在路径中加上你的可执行文件路径就行了,但是刚没注意你的代码有个问题,你要启动的是一个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";