unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls; type TForm1 = class(TForm)Button1: TButton;Memo1: TMemo;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var Filename:String; aTempBuf:array[0..MAX_PATH] of char;bat_file:String;f:TextFile;si:TStartUpInfo;pi:TProcessInformation;begin FileName:=Application.ExeName; if GetShortPathName(PChar(FileName),aTempBuf,Sizeof(aTempBuf)-1)>0 then FileName:=StrPAs(aTempBuf); GetEnvironmentVariable('TEMP',aTempBuf,MAX_PATH); bat_file:=StrPas(aTempBuf)+'\'+'delself.bat'; if GetShortPathName(PChar(bat_file),aTempBuf,Sizeof(aTempBuf)-1)>0 then bat_file:=StrPAs(aTempBuf); AssignFile(f,bat_file); rewrite(f); Writeln(f,'@echo off'); Writeln(f,':try'); Writeln(f,'del '+FileName); Write(f,'if exist '+FileName); Writeln(f,' goto try'); Write(f,'del '+ bat_file); CloseFile(f); Memo1.Lines.LoadFromFile(bat_file); ZeroMemory(@si,sizeof(si)); si.cb:=sizeof(si); si.wShowWindow:=SW_HIDE; si.dwFlags:=STARTF_USESHOWWINDOW; CreateProcess(nil,PChar(bat_file),nil,nil,False,IDLE_PRIORITY_CLASS or DETACHED_PROCESS, nil,nil,si,pi); end; end. |