1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. thehavoc
  2. thehavoc
  3. thehavoc
  4. thehavoc
    Сообщение

    [Вопрос]Delphi

    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');
    Сообщение от: thehavoc, 5 июл 2011 в разделе: Delphi