通过 C# 从正在运行的应用程序运行命令行

发布于 2024-12-04 00:45:12 字数 285 浏览 0 评论 0原文

我查遍了,没有发现任何有用的东西! :(

我想要的是让我的 C# 应用程序对正在运行的进程执行命令。这个正在运行的进程是一个控制台应用程序,我只需要输入命令“重新启动”..我的尝试是:

Process[] processes = Process.GetProcessesByName("OpenSim.32BitLaunch");

foreach (Process p in processes)
{
   p.StandardInput.WriteLine("restart");
}

I've searched around and didn't find anything useful! :(

What i want is to have my C# app doing a command to a running process. This running process is a console application and i just need to enter the command "restart".. my try was:

Process[] processes = Process.GetProcessesByName("OpenSim.32BitLaunch");

foreach (Process p in processes)
{
   p.StandardInput.WriteLine("restart");
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟雨凡馨 2024-12-11 00:45:12

您应该写信给 p.StandardInput

You should write to p.StandardInput.

辞别 2024-12-11 00:45:12

代替

Console.WriteLine("restart");

使用

p.StandardInput.WriteLine("restart");

Instead of

Console.WriteLine("restart");

Use

p.StandardInput.WriteLine("restart");
强者自强 2024-12-11 00:45:12

感谢你们的帮助:)我已经设法使用 SetForegroundWindow 和 SendKeys 解决了问题。
就像这样(记得先导入相应的 dll):

System.Diagnostics.Process process = Process.GetProcessesByName("OpenSim.32BitLaunch")[0];

        Process[] processes = Process.GetProcessesByName("OpenSim.32BitLaunch");

        foreach (Process p in processes)
          {


              SetForegroundWindow(p.MainWindowHandle);
              Thread.Sleep(1000);
              SendKeys.SendWait("quit");
              Thread.Sleep(1000);
              SendKeys.SendWait("{ENTER}");

          }

Thanks by your help guys :) I've managed to solve using SetForegroundWindow and SendKeys.
It was something just like this (remember to import the respective dll's first):

System.Diagnostics.Process process = Process.GetProcessesByName("OpenSim.32BitLaunch")[0];

        Process[] processes = Process.GetProcessesByName("OpenSim.32BitLaunch");

        foreach (Process p in processes)
          {


              SetForegroundWindow(p.MainWindowHandle);
              Thread.Sleep(1000);
              SendKeys.SendWait("quit");
              Thread.Sleep(1000);
              SendKeys.SendWait("{ENTER}");

          }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文