C#关闭应用程序后打开文件
我正在使用C#写入桌面上的文件。在关闭应用程序时(关闭时),是否可以打开此文件(而不是双击)C#关闭应用程序后打开文件,c#,winforms,C#,Winforms,我正在使用C#写入桌面上的文件。在关闭应用程序时(关闭时),是否可以打开此文件(而不是双击) 您可以使用Process.Start启动文件类型的默认应用程序。线索是正确使用ProcessStartInfo。将文件路径和名称作为“应用程序”传入,并将UseShellExecute设置为true 我尝试了以下代码: private void Form1_FormClosed(object sender, FormClosedEventArgs e) { ProcessStartInfo si
您可以使用
Process.Start
启动文件类型的默认应用程序。线索是正确使用ProcessStartInfo
。将文件路径和名称作为“应用程序”传入,并将UseShellExecute
设置为true
我尝试了以下代码:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = @"C:\somefile.txt";
si.UseShellExecute = true;
Process.Start(si);
}
这将在给定文件打开时启动记事本(默认应用程序),然后结束应用程序
请注意,这并不一定要启动Nodepad,而是*.txt文件的默认应用程序,这可能是您想要的,正如您所说,您想要的是与双击文件相同的行为。不确定“文件”是什么意思,但您可以使用默认应用程序打开文档,如下所示:
System.Diagnostics.Process.Start(@"path to file");
注意:它将使用默认应用程序,通常是记事本。如果用户将默认应用程序更改为其他应用程序,它将使用其他应用程序。这是一个很好的方法(我不会显式地调用notepad,因为用户可能有另一个喜欢的编辑器,比如notepad++)
另请参见。不确定您到底想要什么,但尝试猜测:
根据OP的澄清意见,这里是,在记事本过程中打开文件:
Process.Start("notepad.exe", fileName);
更新:
请确保在打开记事本进程后立即“杀死”该“父”进程,否则它将挂起,因为@Kilazur评论道:
Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else
我不明白。请重新措辞你的问题。你说的“打开文件”是什么意思?作为一个对象?过程在记事本中?我完成了对文件的写入,现在想在记事本中打开一个文本文件(我通过双击文件名来完成)。在我关闭申请表后,C#中有一种方法可以打开此文件?@user3428151好的,请查看我的答案。可能重复:,值得一提的是,当你像那样打开文件时,如果您试图关闭(程序),程序将挂起。至少我正在经历它,是的,这与OP没有太大关系。抓到了!愚蠢的显而易见,但在肥皂和其他东西发明之前,天才就是这样被创造出来的。事实上,我怀疑你是否真的要扼杀这个过程。我将尝试,我将再次发表评论。我刚刚尝试过,但应用程序在我的案例中没有挂起。看我的答案-我现在就要编辑了。
Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else