16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"実行ファイルの自殺幇助バッチファイル"
この発言に対し以下のコメントが寄せられています
#00619 Fermion さん RE:実行ファイルの自殺幇助バッチファイル
■概要
実行ファイル終了後に、その実行ファイルを削除するサンプルです。
CreateProcess で実行ファイル削除用のバッチファイルを実行させて
います。(フォルダの削除なども可能です。)
■使用法
・プロジェクト名を Project1 にして下さい。
・Form1 に Button1 を適当に配置して下さい。
・Button1 の OnClick Event にサンプルコードを記述して下さい。
・"test.bat" に、下記コードを記述し、Project1.exe が生成される
フォルダに格納して下さい。
・プロジェクトをコンパイル後、Delphiを含むすべてのアプリを終了
した後に Project1.exe を実行させ、Button1 を押して下さい。
■注意
・COMMAND.COM のプロパティで、“フルスクリーン”に設定されている
場合、一瞬画面が真っ黒になります。((^^;)
・Delphi 上でのデバッグ実行はしない方が無難です。
・実行ファイル名は必ず、project1.exe にして下さい。
・project1.exe と test.bat は同じフォルダに入れて下さい。
■参考
FDELPHI/MES/6/7124 他。
■バッチファイルの内容
REM====================================================================
@ECHO OFF
:loop
del project1.exe
if exist project1.exe goto :loop
del test.bat
REM====================================================================
■サンプルコード
//=====================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
SI: TStartupInfo; PI: TProcessInformation;
CommandLineStr: String;
begin
CommandLineStr := 'command.com /C '
+ ExtractFilePath( Application.ExeName )
+ 'test.bat';
with SI do begin
cb := SizeOf( SI );
lpReserved := nil; lpDesktop := nil; lpTitle := nil;
dwX := 0; dwY := 0;
dwXSize := 0; dwYSize := 0;
dwXCountChars := 0; dwYCountChars := 0;
dwFillAttribute := 0;
dwFlags := STARTF_USESHOWWINDOW; wShowWindow := SW_HIDE;
cbReserved2 := 0; lpReserved2 := nil;
hStdInput := 0; hStdOutput := 0; hStdError := 0;
end;{of with SI do}
if CreateProcess( nil, PChar( CommandLineStr ), nil, nil, False,
CREATE_DEFAULT_ERROR_MODE, nil, nil, SI, PI ) then
begin
CloseHandle( PI.hThread );
CloseHandle( PI.hProcess );
end;
(* Project1.exe 終了 *)
Close;
end;
//=====================================================================
98/06/17(水) 19:14 Fermion[KHF03264]
Original document by Fermion 氏 ID:(KHF03264)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|