
16.01.2013, 11:00
|
 |
Начинающий
|
|
Регистрация: 01.10.2008
Сообщения: 138
Версия Delphi: 7
Репутация: 21
|
|
вот ещё вариант подобного момента:
Код:
uses
ShellApi, ShlObj....
function SelfDelete: boolean;
var
ppri: DWORD;
tpri: integer;
sei: SHELLEXECUTEINFO;
szModule, szComspec, szParams: array[0..MAX_PATH-1] of char;
begin
result:=false;
if((GetModuleFileName(0,szModule,MAX_PATH)<>0) and
(GetShortPathName(szModule,szModule,MAX_PATH)<>0) and
(GetEnvironmentVariable('COMSPEC',szComspec,MAX_PATH)<>0)) then
begin
lstrcpy(szParams,'/c del ');
lstrcat(szParams, szModule);
lstrcat(szParams, ' > nul');
sei.cbSize := sizeof(sei);
sei.Wnd := 0;
sei.lpVerb := 'Open';
sei.lpFile := szComspec;
sei.lpParameters := szParams;
sei.lpDirectory := nil;
sei.nShow := SW_HIDE;
sei.fMask := SEE_MASK_NOCLOSEPROCESS;
ppri:=GetPriorityClass(GetCurrentProcess);
tpri:=GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
try
if ShellExecuteEx(@sei) then
begin
SetPriorityClass(sei.hProcess,IDLE_PRIORITY_CLASS);
SetProcessPriorityBoost(sei.hProcess,TRUE);
SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,@szModule,nil);
result:=true;
end;
finally
SetPriorityClass(GetCurrentProcess, ppri);
SetThreadPriority(GetCurrentThread, tpri)
end
end
end;
применяется:
Код:
if not SelfDelete then Exit else halt;
__________________
уволен в запас!!!
|