ShellExecute(self.handle, 'open', pChar( myPath + 'aaa.bat ' + para1 + ' ' + para2), nil, nil, SW_SHOW);
在2000下没问题,但98下怎么也搞不出,一点反应也没有。

解决方案 »

  1.   

    uses ShellAPI;ShellExecute(Handle,'cmd.exe /c ',pChar( myPath + 'aaa.bat ' + para1 + ' ' + para2), nil, nil, SW_SHOW);
      

  2.   

    winexec( myPath + 'aaa.bat ' + para1 + ' ' + para2, SW_SHOW);
      

  3.   

    楼上的各位:我现在是要解决在98下的问题。2000的调用已经实现了。
    98下调用时有以下错误
    Specified COMMAND search directory bad
    Too many parameters
    Too many parameters
    Microsoft(R) Windows DOS
    (C)Copyright Microsoft Corp 1990-1999.
    我如果先调command.com
    再输入cd myPath 
    再输入 aaa.bat para1 para2
    就可以正常运行。这是什么原因啊?
      

  4.   

    初步估计是 pChar( myPath + 'aaa.bat ' + para1 + ' ' + para2) 其中包含了空格的原因, 98 认为是命令结束,空格后的是参数,说已有这样的提示。试试这样:
    pChar('"' + myPath + 'aaa.bat" ' + para1 + ' ' + para2)
      

  5.   

    接上面,也就是说路径中可能是一个长路径,例如 C:\My Documents\aaa.bat,所以要加上双引号。
      

  6.   

    楼上不是已提示你了吗?
    DOS下不能用长文件名,换成8.3格式试试。我的一个应用中就是换成XXXXXX~1的形式通过的。不知道是不是你问的
      

  7.   

    借这里问一下,如果我这样写winexec('cmd  /k net send',sw_Normal);,那么net send的参数该怎么写那?
      

  8.   

    已解决,果然是CloneCenter(复制中心) 说的那样。
    不过最后还是没用上,因为我发现ShellExecute的第五个参数可以直接转到要调用的程序所在目录,不需要通过批处理在DOS里转了。
    谢谢楼上各位。
    由于 lovedata(萨菲洛斯&我爱娃娃) 在我的帖子里问了个问题,我现在不便马上结贴。我等一天再结贴吧,哪位知道答案的也请在此回答,我可以另加分。
      

  9.   

    ShellExecute(handle,'open','net.exe',pchar(' send 127.0.0.1 abcde'),'',SW_hide);
                                ^^(程序名)        (参数)
    明白了?引用:SHELLAPI 单元.
      

  10.   

    to  lovedata(萨菲洛斯&我爱娃娃) :
    不知道 ltysunde(天崖滴血) 的回答是否满意?我要结贴了,暂时加20分给 ltysunde(天崖滴血) 吧。