我已经知道我可以通过记事本在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代码吗?感谢。
答案 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
进程,但之后没有太多事情要做。