如何保持流程开放?

时间:2014-07-02 15:10:22

标签: c# asp.net process

我在ASP.Net/C#中有一个Web应用程序(使用MVS),我希望能够在客户端启动一些程序(这应该是安全的,因为它仅用于内部网),并保留这些程序打开以便通过网络应用程序向他们提供一些命令输入。

例如,我想打开“cmd.exe”客户端,然后能够一个接一个地发送多个命令(与我的Web表单的某些按钮同步)到该进程。

我该怎么做?我已经阅读了很多关于使用一个带有ActiveX对象的Javascript块,或者在带有System.Diagnostics.Process的C#中,但我仍然坚持如何继续。

3 个答案:

答案 0 :(得分:1)

 function RunEXE()
 {
     var oShell = new ActiveXObject("WScript.Shell");
     var prog = "c:\\WINDOWS\\system32\\notepad.exe";
     oShell.Run('"'+prog+'"',1);
 }

答案 1 :(得分:1)

您还可以查看自定义协议处理程序,例如,蒸汽使用。您只需拥有myprotocol://dosomething/whatever之类的链接,它就会使用给定的网址启动您的客户端应用程序。

它基本上只是编写注册表项:http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx

例如,要注册名为alert的协议,您可以执行以下操作:

HKEY_CLASSES_ROOT
   alert
      (Default) = "URL:Alert Protocol"
      URL Protocol = ""
      DefaultIcon
         (Default) = "alert.exe,1"
      shell
         open
            command
               (Default) = "C:\Program Files\Alert\alert.exe" "%1"

当您导航到以command开头的网址时,这会导致alert://中的应用启动。

答案 2 :(得分:0)

使用c#

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "CMD.EXE";
startInfo.Arguments = "list of args";
Process.Start(startInfo);

此后,您可以通过

继续检查天气是否开启
Process[] processes = Process.GetProcesses();

Process[] chromes = Process.GetProcessesByName("chrome");

检查您的处理是否已打开,然后将args传递给它