我在b/s上要调用一个exe的程序,但是一旦调用我就无法控制它了,我怎样才能控制它呢?能控制到什么程度?我希望能在界面上显示Exe输出的错误,能包括正常和非正常的吗?在出错后我如何能关闭它。我现在的状况是:一旦我在b/s上调用了一个exe程序,如果exe出错了我就只能重起机器,毫无办法,连用任务管理器的关闭进程都无法关闭。真是急死人了!!!请各位大哥帮忙阿!!!
ps:好像启动第二个另外的进程,或用shell能做到,可我不熟悉这块,有大虾熟悉这块的请帮帮小第把,最好能有个例子,先谢了……。

解决方案 »

  1.   

    先问一下,你是怎么调用exe的?
      

  2.   

    IE通过脚本调用客户机器上的可执行程序,默认情况下是不允许的。除非你拥有足够高的权限。但是你可以调用进程内COM,即ActiveX。已经注册的COM默认情况下授予本地系统账户安全,所以可以在网页中运行,比如,你可以在网页中使用Netmeeting,MSN等。至于调用.NET程序集合,如果你要在客户端控制它,那么只能用脚本,但是用脚本控制.NET程序集,目前还没有做到吧。
      

  3.   

    我只是要在客户端起动一个服务器端的应用程序,我现在用proc启动了这个应用程序。如果这个应用程序正常执行完毕的化没有问题。但是一旦这个应用程序出错,或输出错误,这个应用程序就死机了。除非重起服务器,否则无法关闭应用程序。我想能否用某种方法获得出错信息然后kill掉这个应用程序?
    对了这个应用程序是用c编的,部署时放到了服务器端。
      

  4.   

    //设置外部程序名

    System.Diagnostics.ProcessStartInfo  Info  =  new  System.Diagnostics.ProcessStartInfo();
    Info.FileName  =  "xxx.exe";
    //设置外部程序的启动参数(命令行参数)为test.txt
    //设置外部程序工作目录为  C:\
    Info.WorkingDirectory  =  this.MapPath("")+"\\" ;
    //声明一个程序类
    System.Diagnostics.Process  Proc ;
    try
    {
    //
    //启动外部程序
    //
    Proc  =  System.Diagnostics.Process.Start(Info);  //启动子进程
    }
    catch
    {
    this.Labelerror.Text="系统找不到指定的程序文件!";
    return;
    }
    //等待两小时
    Proc.WaitForExit(54000000);

    //如果这个外部程序没有结束运行则对其强行终止
    if(Proc.HasExited  ==  false)
    {
    this.Labelerror.Text="程序运行超时,由主程序强行终止程序的运行!请重新运行或与管理员联系!";
    Proc.Kill();
    return;
    }
    this.Labelerror.Text="程序运行成功!";
      

  5.   

    1,捕获异常
    2,调用api,结束进程,(先运行你的exe程序,可以在管理器中找到进程名!)
      

  6.   

    回复人: wnlovezxm(大垃圾人) ( ) 信誉:100  2004-09-08 16:36:00  得分: 0  
     
     
       1,捕获异常
    2,调用api,结束进程,(先运行你的exe程序,可以在管理器中找到进程名!)
      
     
    我怎样才能“捕获异常”?try…catch好像不行把?是否要启动另外一个进程来获得,子进程的错误消息。还望赐教。
      

  7.   

    我如下调用,结果是成功了
    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = “";
    p.Start();调用了自已的一个exe可执行文件,
    打开进程管理器,结果会看到启动了----说明调用成功,
    但为什么不会弹出一个对话框呢?
    ---因为我的exe在启动时会弹出一个对话框。