2012-02-09 85 views
1

Visual Studio 2010中 C#从命令行关闭正在运行的程序

是否有可能运行和命令行关闭程序?我需要做这样的事情:

myProgram.exe -start 
-- do something -- 
myProgram.exe -stop 

我知道如何实现第一部分(主字串[] args),但我怎么能收我的正在运行的程序?


编辑

myProgram.exe正在处理一些UDP通信和同时在东西已经被执行 - 执行 - 做一些事情。对不起,不准确。

+0

如果您使用的WinForms这可能帮助: http://stackoverflow.com/questions/4547643/how-can-i-pass-command-line-arguments-to-an-already-running-process – Fox32 2012-02-09 10:12:49

+0

可以提供更多详细信息吗? – kbvishnu 2012-02-09 10:13:06

+0

这是很难理解什么正在这里问:“'myProgram.exe'”进程将退出(不复存在)曾经的主要功能完成,即经过“ - 做一些事情 - ”已完成,没有需要从外部杀死它。如果这不是你想要的,你需要澄清你的问题。 – 2012-02-09 10:15:51

回答

1

我猜你知道如何检查命令行参数并查找是否指定了停止?以下应该完成这项工作。

 var currentProcess = System.Diagnostics.Process.GetCurrentProcess(); 
     var matchingProcesses = System.Diagnostics.Process.GetProcesses().Where(x => x.Id != currentProcess.Id && x.ProcessName == currentProcess.ProcessName); 
     foreach (var process in matchingProcesses) { 
      process.Kill(); 
     } 
+0

这是一个很好的方法。我不会杀死这个过程,而是会向这个过程发送一条消息。 – Hint 2012-02-09 10:34:19

+0

你也可以在应用程序中的粗消息系统使用静态。即killHasBeenSignalled = true,然后检查是否处于开始状态。 – 2012-02-09 10:37:12

+0

如何访问其他任务的静态成员? – Hint 2012-02-09 10:38:46

0

使用,旨在关闭进程的命令行程序 - pskill就是这样一个程序。

pskill myProgram.exe 

一个内置的实用工具taskkill

taskkill /im myProgram.exe 
1

是否有可能使用taskkill对于这样的事情。

也就是说,如果你想关闭myProgram.exe,您可以通过名称

  • 执行

    taskkill /IM myProgram.exe 
    
  • +2

    也用'/ F'扩展这一行来强制关闭程序。 – Pieter888 2012-02-09 10:14:42

    +0

    我需要做一些关闭程序的东西。是否可以注册由某种关闭事件触发的回调? – Hint 2012-02-09 10:17:59

    0

    由于Fox32在他的评论中已经提到你真的应该采取this approach,原因在这种情况下,应用程序可以真正关机本身优雅。如果你只是去使用的taskkill等杀来自外部世界的过程中,你可能真的遇到麻烦根据使用(网络,数据库,文件等)的资源。