如何通过C#控制台程序打开并保存文件通过记事本

时间:2018-02-01 10:21:12

标签: c# save notepad

我已经知道我可以通过记事本在c#中打开和关闭一个存在的文本文件 像这样:

using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {        
        // open by notepad
        Process.Start("notepad.exe", @"myfile.txt");

        // automatically save this file by notepad

        // kill notepad process
        Process[] proc = Process.GetProcessesByName("notepad");
        proc[0].Kill();   
    }
}

但是我需要在关闭此文件之前通过记事本自动保存此文件。我试图发送按键ctrl + s但是徒劳无功。 这有.net代码吗?感谢。

2 个答案:

答案 0 :(得分:1)

我猜你可以这样做

SendKeys.SendWait Method (String)

  

将给定的密钥发送到活动的应用程序,然后等待   要处理的消息。

<强>说明

  

使用SendWait向键盘发送击键或击键组合   活动应用程序并等待击键消息   处理。您可以使用此方法将击键发送到   应用程序并等待由...启动的任何进程   按键完成。如果是另一个,这可能很重要   申请必须在您的申请可以继续之前完成。

<强>进口

[DllImport("User32.dll")]   
public static extern Int32 SetForegroundWindow(int hWnd);   

<强>代码

var process = Process.Start("notepad.exe", @"myfile.txt"));
process.WaitForInputIdle();
var handle = process.MainWindowHandle;
SetForegroundWindow(handle);

// if the window is still in the foreground
SendKeys.SendWait("^(s)"); // Ctrl+S

答案 1 :(得分:0)

如果您需要修改文件,更好的方法是打开,修改和保存文本文件内容,其中包含当前System.IO.File - 类中的操作。当在代码中打开文件时,你可以用System.Text - namespace(System.Text.Encoding)中的类来改变它的编码。

您可以启动notepad.exe进程,但之后没有太多事情要做。