我需要程序test.exe自我刪除,代碼如下
var
f:textfile;
begin
assignfile(f,'del.bat');
rewrite(f);
writeln(f,'del '+extractfilename(application.exename));
writeln(f,'del %0');
closefile(f);
winexec('del.bat',sw_hide);
application.Terminate;
end;
生成程序後自己雙擊執行,一切正常,程序也自己刪除了.
但在另外一個程序裡執行代碼winexec('C:\test.exe',sw_normal);
test.exe執行了但卻沒有自我刪除,請問為何會這樣?如何解決?
謝謝.

解决方案 »

  1.   

    是哪個路徑?同樣一個程序,
    我執行代碼winexec('C:\test.exe',sw_normal);
    test.exe有運行,只是沒有自我刪除而已.
    自己雙擊'C:\test.exe',程序正常運行,可以自我刪除,
    何解呢?
      

  2.   

    路径问题。winexec('del.bat',sw_hide);这一句默认为当前路径。而你在另一个程序里写winexec('C:\test.exe',sw_normal);是指定了路径C:\
    del.bat其实是没有执行的。如果你把另一个程序和test.exe一起放到C:\  就可以删除了。
      

  3.   

    一起放到C:\是可以刪除,但我不想這樣做,做以下修改 
    assignfile(f,'c:\\del.bat');
    .....
    winexec('c:\\del.bat',sw_hide);
    已指定了路徑,為何結果還是一樣呢?如何解決?
    請指教.
      

  4.   

    还要在创建del.bat的时候加路径
    writeln(f,'del '+'c:\'+extractfilename(application.exename));