关闭应用程序后打开文件

本文关键字:文件 应用程序 | 更新日期: 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,设置UseShellExecutetrue

我尝试了以下代码:

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文件的默认应用程序,这可能是您想要的,正如您说过的,您想要与双击文件相同的行为

不确定你到底想要什么,但试着猜一下:

  1. 如果你想在后台进程中写入文件,使用streamwriter是正确的方法。

    using (StreamWriter sw = new StreamWriter(filepath)){//写内容。}

  2. 如果你试图启动一个文件到用户的桌面,你可能需要创建一个新的进程来调用文件的相关应用程序。

不知道你说的" file "是什么意思,但是你可以用它的默认应用程序打开一个文档,如下所示:

System.Diagnostics.Process.Start(@"path to file");

注意:它将使用默认的应用程序,通常是notepad。如果用户将默认应用程序更改为其他应用程序,则将使用其他应用程序。这是一个很好的方法(我不会显式地调用notepad,因为用户可能有另一个喜欢的编辑器,如notepad++)。

请参见启动新进程和终止当前进程。