Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Убить системный процесс 
:(
    Опции темы
Михалыч
Дата 7.2.2025, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Подскажите, как убить системный процесс? Раньше на XP было так:
А теперь на windows 10 64 bit как?
Код

function KillTask(ExeFileName: string): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot
  (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle,
  FProcessEntry32);
  while integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
    UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
    UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(OpenProcess(
      PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;




--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
ZBugz
  Дата 9.2.2025, 09:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Китайский AI говорит так:
Код

program TerminateProcessExample;

{$APPTYPE CONSOLE}

uses
  System.SysUtils, Winapi.Windows;

function TerminateSystemProcess(const ProcessName: AnsiString): Boolean;
var
  SnapHandle: THandle;
  ProcEntry: TProcessEntry32;
  ProcessHandle: THandle;
begin
  Result := False;

  // Создаем снимок всех процессов
  SnapHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if SnapHandle = INVALID_HANDLE_VALUE then
  begin
    Writeln('Не удалось создать снимок процессов.');
    Exit;
  end;

  try
    ProcEntry.dwSize := SizeOf(TProcessEntry32);

    // Перебираем все процессы
    if Process32First(SnapHandle, ProcEntry) then
      repeat
        // Сравниваем имя процесса (без учета регистра)
        if AnsiSameText(ExtractFileName(ProcEntry.szExeFile), ProcessName) then
        begin
          Writeln(Format('Найден процесс: %s (PID: %d)', [ProcEntry.szExeFile, ProcEntry.th32ProcessID]));

          // Открываем процесс с правами TERMINATE
          ProcessHandle := OpenProcess(PROCESS_TERMINATE, False, ProcEntry.th32ProcessID);
          if ProcessHandle = 0 then
          begin
            Writeln(Format('Не удалось открыть процесс %s. Код ошибки: %d', [ProcEntry.szExeFile, GetLastError]));
            Continue;
          end;

          try
            // Принудительно завершаем процесс
            if TerminateProcess(ProcessHandle, 0) then
            begin
              Writeln(Format('Процесс %s успешно завершен.', [ProcEntry.szExeFile]));
              Result := True;
            end
            else
            begin
              Writeln(Format('Не удалось завершить процесс %s. Код ошибки: %d', [ProcEntry.szExeFile, GetLastError]));
            end;
          finally
            CloseHandle(ProcessHandle);
          end;
        end;
      until not Process32Next(SnapHandle, ProcEntry);
  finally
    CloseHandle(SnapHandle);
  end;
end;

begin
  try
    // Завершаем процесс по имени (например, notepad.exe)
    if ParamCount > 0 then
    begin
      if TerminateSystemProcess(AnsiString(ParamStr(1))) then
        Writeln('Операция завершена успешно.')
      else
        Writeln('Процесс не найден или не удалось его завершить.');
    end
    else
      Writeln('Использование: TerminateProcessExample <имя_процесса>');
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

  Readln; // Ожидание, чтобы консоль не закрылась
end.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.