Вверх ↑
Ответов: 3349
Рейтинг: 233
#1: 2011-10-01 22:49:02 ЛС | профиль | цитата
pardon, Вариант конечно хороший, но менее универсальный, на других FS не сработает. От меня +1
------------ Дoбавленo в 22.46:
Сделал еще один пример по найденному в интернете коду.
Add(InlineCode,14175929,280,525)
{
WorkPoints=#10:SelfDelete|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug, Windows, shellapi;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|12: public |49: procedure SelfDelete(var dt:TData; idx:WORD);|5: end;|0:|14:implementation|0:|141:procedure SHChangeNotify(wEventId:cardinal; uFlags:integer; dwItem1, dwItem2:Pointer);stdcall; external 'Shell32.dll' name 'SHChangeNotify';|0:|31:const SHCNE_DELETE = $00000004;|32: SHCNF_PATHA = $0001;|32: SHCNF_PATHW = $0005;|36: SHCNF_PATH = SHCNF_PATHA;|0:|30:function _SelfDelete: boolean;|54:var ppri: DWORD; tpri: Integer; sei: SHELLEXECUTEINFO;|64: szModule, szComspec, szParams: array[0..MAX_PATH - 1] of char;|5:begin|18: Result := false;|57: if ((GetModuleFileName(0, szModule, MAX_PATH) <> 0) and|61: (GetShortPathName(szModule, szModule, MAX_PATH) <> 0) and|71: (GetEnvironmentVariable('COMSPEC', szComspec, MAX_PATH) <> 0)) then|7: begin|33: lstrcpy(szParams, '/c del ');|32: lstrcat(szParams, szModule);|32: lstrcat(szParams, ' > nul');|0:|30: sei.cbSize := sizeof(sei);|17: sei.Wnd := 0;|25: sei.lpVerb := 'Open';|28: sei.lpFile := szComspec;|33: sei.lpParameters := szParams;|27: sei.lpDirectory := nil;|25: sei.nShow := SW_HIDE;|41: sei.fMask := SEE_MASK_NOCLOSEPROCESS;|0:|48: ppri := GetPriorityClass(GetCurrentProcess);|48: tpri := GetThreadPriority(GetCurrentThread);|0:|65: SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);|71: SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);|7: try|34: if ShellExecuteEx(@sei) then|11: begin|60: SetPriorityClass(sei.hProcess, IDLE_PRIORITY_CLASS);|52: SetProcessPriorityBoost(sei.hProcess, TRUE);|0:|65: SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, @szModule, nil);|0:|23: result := true;|10: end;|11: finally|48: SetPriorityClass(GetCurrentProcess, ppri);|47: SetThreadPriority(GetCurrentThread, tpri)|7: end|5: end|4:end;|0:|33:procedure THiAsmClass.SelfDelete;|5:begin|15: _SelfDelete();|4:end;|0:|0:|4:end.|
}
Add(Button,12112762,210,525)
{
Left=225
Top=80
link(onClick,14175929:SelfDelete,[])
}


Причем процесс не закрывается после удаления
------------ Дoбавленo в 22.49:
Интересно, но он не удаляется, а интересным образом скрывается
карма: 1

0