none
winform调用外部程序时找不到程序? RRS feed

  • 问题

  •   ProcessStartInfo newStart = new ProcessStartInfo();

                newStart.Arguments = inputFile;
                newStart.FileName = Application.StartupPath+ "\\flvcomb.exe";
                newStart.WorkingDirectory = Application.StartupPath;
                System.Diagnostics.Process Proc;
                try
                {
                    Proc = System.Diagnostics.Process.Start(newStart);
                }
                catch (System.ComponentModel.Win32Exception e)
                {
                    MessageBox.Show("系统找不到指定的程序文件。\r{0}",e.Message);
                    return;
                }

    使用了绝对路径,是否有问题?

    程序在 C:\Documents and Settings\SIMONG\My Documents\Visual Studio 2008\Projects这样的目录下面,好像带空格的目录找不到啊?请问该怎么解决?

    2010年3月31日 6:34

答案

  • 看看 newStart.FileName 的内容和你的exe完整路径是否完全一致, e.Message 提示消息是什么?

    都这年头了咋还会卡在空格上呢。


    霸王
    • 已标记为答案 massinger 2010年3月31日 7:37
    2010年3月31日 6:42
  • 和目录应该没关系

    你这个异常是 “打开关联的文件时发生了错误”

    仔细检查文件位置是否在 Application.StartupPath目录下面。(一般 Application.StartupPath 是你debug文件夹位置)。


    family as water
    • 已标记为答案 massinger 2010年3月31日 7:37
    2010年3月31日 6:46

全部回复

  • 看看 newStart.FileName 的内容和你的exe完整路径是否完全一致, e.Message 提示消息是什么?

    都这年头了咋还会卡在空格上呢。


    霸王
    • 已标记为答案 massinger 2010年3月31日 7:37
    2010年3月31日 6:42
  • 和目录应该没关系

    你这个异常是 “打开关联的文件时发生了错误”

    仔细检查文件位置是否在 Application.StartupPath目录下面。(一般 Application.StartupPath 是你debug文件夹位置)。


    family as water
    • 已标记为答案 massinger 2010年3月31日 7:37
    2010年3月31日 6:46
  • 汗,是我把程序放错地方了,无敌了,囧。
    2010年3月31日 7:38
  • 你好,我看你的问题解决了,我现在也遇到同样的问题了。我也是想外调程序。

    应用程序中的服务器错误。


    系统找不到指定的文件。

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.ComponentModel.Win32Exception: 系统找不到指定的文件。

    源错误:

    行 59:     p.StartInfo.Arguments = argument
    行 60:     p.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden
    行 61:     p.Start()
    行 62: 		
    行 63: 


    源文件: E:\MYWEB\Spindle\input12.aspx.vb    行: 61

    堆栈跟踪:

    [Win32Exception (0x80004005): 系统找不到指定的文件。]
      System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) +912
      System.Diagnostics.Process.Start() +136
      Default8.Button1_Click(Object sender, EventArgs e) in E:\MYWEB\Spindle\input12.aspx.vb:61
      System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
      System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
      System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
      System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
      System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
      System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
    


    2011年8月22日 2:08
  • 你好,我看你的问题解决了,我现在也遇到同样的问题了。我也是想外调程序。

    应用程序中的服务器错误。


    系统找不到指定的文件。

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.ComponentModel.Win32Exception: 系统找不到指定的文件。

    源错误:

    行 59:   p.StartInfo.Arguments = argument
    行 60:   p.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden
    行 61:   p.Start()
    行 62: 		
    行 63: 


    源文件: E:\MYWEB\Spindle\input12.aspx.vb    行: 61

    堆栈跟踪:

    [Win32Exception (0x80004005): 系统找不到指定的文件。]
     System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) +912
     System.Diagnostics.Process.Start() +136
     Default8.Button1_Click(Object sender, EventArgs e) in E:\MYWEB\Spindle\input12.aspx.vb:61
     System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
     System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
     System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
     System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
     System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
     System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
    
    非常感谢您的回复…………
    2011年8月22日 2:09
  • p.StartInfo.Arguments = argument 这个签名应该还有一句语句。

     

    检查这个语句指定的程序名称和路径,是否是你需要运行的程序的实际位置。

     

    系统找不到文件就是说你的这个程序路径不对。

     


    family as water
    2011年8月22日 12:25