程序执行COPY后不执行1.18.EXEprocedure TForm1.BitBtn1Click(Sender: TObject);
var
a,b,c,d:string;begin
a:=('E:\硬盘游戏\魔兽争霸\war3.exe');
b:=('E:\硬盘游戏\魔兽争霸\1.18.exe');
C:=('D:\Games\Warcraft III\war3.exe');
d:=('E:\Games\魔兽争霸\war3.exe');
    if FileExists(a) then
        WinExec('xcopy E:\硬盘游戏\魔兽争霸\版本\1.18\1.18.exe E:\硬盘游戏\魔兽争霸\ /z/s/i', SW_HIDE)
    else
    if FileExists(b) then
        ShellExecute(handle,'open','E:\Games\魔兽争霸\1.18.exe','','',SW_SHOWNORMAL)
    else
    ......
    showmessage('找不到文件');
end;
end;

解决方案 »

  1.   

    想copy完马上执行1.18.exe?
    if FileExists(a) then
        begin
          WinExec('xcopy E:\硬盘游戏\魔兽争霸\版本\1.18\1.18.exe E:\硬盘游戏\魔兽争霸\ /z/s/i', SW_HIDE);
          ShellExecute(handle,'open','E:\Games\魔兽争霸\1.18.exe','','',SW_SHOWNORMAL);
        end
      else
       ...
    楼主是在做魔兽的版本转换器吧?
      

  2.   

    哦,可能是那个路径问题。
    执行的时候应该是执行 E:\硬盘游戏\魔兽争霸\1.18.exe
    以前我想做一个,后来发现那几个版本的压缩包太大了。
    我不明白怎么会有几个路径的文件:
    a:=('E:\硬盘游戏\魔兽争霸\war3.exe'); //这个魔兽主程序
    b:=('E:\硬盘游戏\魔兽争霸\1.18.exe');//这个压缩包文件?
    C:=('D:\Games\Warcraft III\war3.exe');//??
    d:=('E:\Games\魔兽争霸\war3.exe');//??
      

  3.   

    路径是一个问题,但主要是COPY完后不能打开1.18.EXE,如果把//***COPY的话是可以打开1.18.EXE的,主要问题是COPY完后继续执行'open','E:\硬盘游戏\魔兽争霸\1.18.exe'
    另外就是多点击几次BitBtn1Click的话会XCOPY会驻留的内存中,CTRL+ALT+DEL可以看的见几个
    XCOPY,哪怕是XCOPY完之后也不会释放,如何先释放再CLOSE?
      

  4.   

    不要用XCOPY这类,用SHFileOperation来COPY才是正确的方法