このスレッドはロックされています。記事の閲覧のみとなります。
トップページ > 記事閲覧
自分自身(EXE)を削除する関数
日時: 2005/04/07 23:39
名前: WoodyBells管理人

早速ネタが続かないので^^;
2001年に旧HPで紹介した自分自身を削除する関数を再掲します。

次の関数(RemoveMe)を実行させれば自分自身が削除できます。
アンインストールプログラムなどに使えますか?


uses 
  Windows, SysUtils; 

procedure RemoveMe; 
var 
  BatchFile: TextFile; 
  BatchFileName: string; 
  ProcessInfo: TProcessInformation; 
  StartUpInfo: TStartupInfo; 
begin 
  BatchFileName := ExtractFilePath(ParamStr(0)) + 'hogehoge.bat'; 
  AssignFile(BatchFile, BatchFileName); 
  Rewrite(BatchFile); 
  Writeln(BatchFile, ':TRY'); 
  Writeln(BatchFile, 'DEL "' + ParamStr(0) + '"'); 
  Writeln(BatchFile, 'IF EXIST "' + ParamStr(0) + '"' + ' GOTO TRY'); 
  Writeln(BatchFile, 'DEL "' + ChangeFileExt(BatchFileName, '.PIF') + '"'); 
  Writeln(BatchFile, 'DEL "' + BatchFileName + '"'); 
  CloseFile(BatchFile); 
  FillChar(StartUpInfo, SizeOf(StartUpInfo), $00); 
  StartUpInfo.dwFlags := STARTF_USESHOWWINDOW; 
  StartUpInfo.wShowWindow := SW_HIDE; 
  if CreateProcess(nil, PChar(BatchFileName), nil, nil, False, 
       IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then
  begin 
    CloseHandle(ProcessInfo.hThread); 
    CloseHandle(ProcessInfo.hProcess); 
  end;
end;


もう、おわかりになると思いますが、上の関数によってBATファイルを
生成し自分自身の削除に成功するまでループさせます^^;;
メンテ

Page: 1 |