在2000下,在delphi中用winexec调用一个命令行程序,其所在路径是f:\program files\
但是,如果直接运行的话,他会提示
'f:\program' 不是内部或外部命令,也不是可运行的程序或批处理文件。
好像只有当路径中有空格的时候会出现,请问如何解决?

解决方案 »

  1.   

    uses shellapi;
    ShellExecute(handle,'open', 'C:\Program Files\tt.txt', nil, nil, SW_SHOWNORMAL);
    试试
      

  2.   

    有空格也可执行,没问题。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      winExec('C:\Program Files\Adobe\Photoshop 7.0\Photoshop.exe',sw_show);
    end;
      

  3.   

    winExec('C:\Program Files\Adobe\Photoshop 7.0\Photoshop.exe',sw_show);
      

  4.   

    uses shellapi;
    ShellExecute(handle,'open', 'C:\Program Files\tt.txt', nil, nil, SW_SHOWNORMAL);
    这个好啊。是调用API,一定好用。不知道为什么这么多人用WINexec
      

  5.   

    WinExec 也是API啊,参数相对少些,对于要求不多的时候,用起来方便。
      

  6.   

    看delphi的sdk帮助
    Obsolete Functions:
    WinExec 
    WinExec就快被舍弃拉,大家还是养成用shellexecute的习惯吧,不过winexec确实很方便哈~~
     
      

  7.   

    shellExecute 也快被舍弃调啦,微软推荐使用 CreateProcess ,参数巨多,巨麻烦。
      

  8.   

    我没把问题说清楚,其实我要调用media player 9 encoder,但是它的要求是一定要在
    f:\program files\windows media components\encoder 下操作.因为操作命令是
    cscript.exe wmcmd.vbs –input drive:\Path\Input_file_name -output drive:\Path\Output_file_name ,其中wmcmd.vbs文件在这个路径下,可是我在其它位置,在wmcmd.vbs前面加上路径,他会因为空格的原因不认识.微软的说明是要求首先把当前路径换到改目录下.可是调用dos命令不可以先执行cd ...... 然后再执行其他命令把?
      

  9.   

    怎么,其他人一分也没有啊?!而且 ghyghost(╔☆→向菜文作者转形←☆╝) 的答案也不是正确答案!
      

  10.   

    不好意思,给分得时候没有注意。不过我最后解决的办法就是ghyghost(╔☆→向菜文作者转形←☆╝) 说得。下个问题中再把分数补上。