在陈锦涛大哥网上找到的东东,或许能达到你的要求。
unit Unit1;
; ; ; interface
; ; ; uses
; ; ; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
; ; ; StdCtrls;
; ; ; type
; ; ; TForm1 = class(TForm)
; ; ; Button1: TButton;
; ; ; procedure My_DeleteMe; //自定义程序自杀过程
; ; ; procedure Button1Click(Sender: TObject);
; ; ; private
; ; ; { Private declarations }
; ; ; public
; ; ; { Public declarations }
; ; ; end;
; ; ; var
; ; ; Form1: TForm1;
; ; ; implementation
; ; ; {$R *.DFM}
; ; ; procedure TForm1.Button1Click(Sender: TObject);
; ; ; begin
; ; ; My_DeleteMe;
; ; ; end;
; ; ; procedure TForm1.My_DeleteMe; //程序自杀
; ; ; //-----------------------------------------------------------
; ; ; function GetShortName(sLongName: string): string; //转换长文件名
; ; ; var
; ; ; sShortName: string;
; ; ; nShortNameLen: integer;
; ; ; begin
; ; ; SetLength(sShortName, MAX_PATH);
; ; ; nShortNameLen := GetShortPathName(PChar(sLongName),
; ; ; PChar(sShortName), MAX_PATH - 1);
; ; ; if (0 = nShortNameLen) then
; ; ; begin
; ; ; // handle errors...
; ; ; end;
; ; ; SetLength(sShortName, nShortNameLen);
; ; ; Result := sShortName;
; ; ; end;
; ; ; //-------------------------------------------------
; ; ; var
; ; ; BatchFile: TextFile;
; ; ; BatchFileName: string;
; ; ; ProcessInfo: TProcessInformation;
; ; ; StartUpInfo: TStartupInfo;
; ; ; begin
; ; ; BatchFileName := ExtractFilePath(ParamStr(0)) + '$$a$$.bat';
; ; ; AssignFile(BatchFile, BatchFileName);
; ; ; Rewrite(BatchFile);
; ; ; Writeln(BatchFile, ':try');
; ; ; Writeln(BatchFile, 'del "' + GetShortName(ParamStr(0)) + '"');
; ; ; Writeln(BatchFile, 'if exist "' + GetShortName(ParamStr(0)) + '"' + ' goto try');
; ; ; Writeln(BatchFile, 'del %0');
; ; ; Writeln(BatchFile, 'cls');
; ; ; Writeln(BatchFile, 'exit');
; ; ; 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;
; ; ; Application.Terminate;
; ; ; end;
; ; ; end.