关闭应用程序后打开文件
本文关键字:文件 应用程序 | 更新日期: 2023-09-27 18:05:33
我正在使用c#写入位于桌面的文件。我可以打开这个文件(而不是双击它)时关闭我的应用程序(关闭)?
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
writer.Close();
/* Some code here */
}
根据OP的澄清注释,这里是,在记事本进程中打开文件:
Process.Start("notepad.exe", fileName);
更新:
确保在打开记事本进程后立即"杀死"父进程,否则它会挂起,因为@Kilazur被注释掉了:
Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else
可以使用Process.Start
来启动该文件类型的默认应用程序。线索是正确使用ProcessStartInfo
。输入文件路径和文件名为application,设置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文件的默认应用程序,这可能是您想要的,正如您说过的,您想要与双击文件相同的行为
不确定你到底想要什么,但试着猜一下:
-
如果你想在后台进程中写入文件,使用streamwriter是正确的方法。
using (StreamWriter sw = new StreamWriter(filepath)){//写内容。}
-
如果你试图启动一个文件到用户的桌面,你可能需要创建一个新的进程来调用文件的相关应用程序。
不知道你说的" file "是什么意思,但是你可以用它的默认应用程序打开一个文档,如下所示:
System.Diagnostics.Process.Start(@"path to file");
注意:它将使用默认的应用程序,通常是notepad。如果用户将默认应用程序更改为其他应用程序,则将使用其他应用程序。这是一个很好的方法(我不会显式地调用notepad,因为用户可能有另一个喜欢的编辑器,如notepad++)。
请参见启动新进程和终止当前进程。