Пару часов назад. Остался довольным. Когда вы последний делали что-то полезное для людей?
Однако, стоит заметить, что и делфи дистиллер работает наотличненько. Добавил второй пост за неимением возможности редактировать исходный
держи кряку http://thehavoc.narod.ru/keygen.zip Там для делфи 2010 и ХЕ. Советую обновить Библиотеку инди, если знаешь, что это такое.
var hSnap:THandle; pe:TProcessEntry32; pid: DWORD; begin pe.dwSize:=SizeOf(pe); hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); If Process32First(hSnap,pe) then While Process32Next(hSnap,pe) do begin if ExtractFileName(pe.szExeFile)='taskmgr.exe' then begin //Ваши действия end; Если вам нужно убить процесс, то есть удобная и безотказная функция. function KillProcess(PID: Integer): Integer; var PH, EC: Cardinal; begin Result:= 0; PH:= OpenProcess(PROCESS_ALL_ACCESS, True, PID); GetExitCodeProcess(PH, EC); if (PH = 0) then Result:= GetLastError else begin if not TerminateProcess(PH, EC) then Result:= GetLastError; CloseHandle(PH); end; Некоторые процессы возможно завершить только с особыми правами. На этот случай есть функция function AdjustProcessPrivilege(PrivilegeName: WideString): Boolean; var TokenHandle: Cardinal; TokenPrivileges: TTokenPrivileges; ReturnLength: Cardinal; begin Result := False; try if Windows.OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle) then begin try LookupPrivilegeValueW(nil, PWideChar(PrivilegeName), TokenPrivileges.Privileges[0].Luid); TokenPrivileges.PrivilegeCount := 1; TokenPrivileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; if AdjustTokenPrivileges(TokenHandle, False, TokenPrivileges, 0, nil, ReturnLength) then Result := True; finally CloseHandle(TokenHandle); end; end; except Exit; end; end; А в Создание формы прописать: AdjustProcessPrivilege('SeDebugPrivilege');
Имена участников (разделяйте запятой).