Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2008, 14:10   #1
One.Love
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 91
По умолчанию как убить процесс зная его имя?

Помогите пожалуйста убить процесс по его имени
Если не турдно выложите код плз
Заранее большое спасибо
One.Love вне форума Ответить с цитированием
Старый 15.02.2008, 16:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

1. Найди ИД процесса - поиском по форуму на CreateToolHelp32Snapshot
2. Когда найдеш код там будет цикл, в котором нужно проверять на имя прцесса (ты его знаеш, имя) в цикле проверкой получиш ИД найденного процесса и к нему примениш TerminateProcess (тоже поиск по форуму даст результы)

Удачи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.02.2008, 17:56   #3
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Гм... а нельзя просто симетировать нажатия комбинации Ctrl+alt+delete симетировать шелчем мыши на вкладке процессы найти нужный процесс, симетировать нажатие delete и наконец симетировать нажатие на да в диалоге.

Последний раз редактировалось Иллидан; 15.02.2008 в 18:00.
Иллидан вне форума Ответить с цитированием
Старый 15.02.2008, 19:06   #4
Kashp
Форумчанин
 
Регистрация: 05.08.2007
Сообщений: 225
По умолчанию

Цитата:
Сообщение от One.Love Посмотреть сообщение
Помогите пожалуйста убить процесс по его имени
Если не турдно выложите код плз
Заранее большое спасибо
winexec('taskkill /F /IM процесс.exe', SW_HIDE);
Kashp вне форума Ответить с цитированием
Старый 15.02.2008, 19:08   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Иллидан Посмотреть сообщение
Гм... а нельзя просто симетировать нажатия комбинации Ctrl+alt+delete симетировать шелчем мыши на вкладке процессы найти нужный процесс, симетировать нажатие delete и наконец симетировать нажатие на да в диалоге.
это в 10 раз сложнее, чем способ который описал Stilet
Цитата:
Сообщение от One.Love Посмотреть сообщение
Если не турдно выложите код плз
чтобы получить пример кода, юзаем плиск по форуму. (http://programmersforum.ru/showthread.php?t=12626)
rpy3uH вне форума Ответить с цитированием
Старый 16.02.2008, 16:11   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
uses
   Tlhelp32,...

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; 

procedure TForm1.Button1Click(Sender: TObject); 
begin
  KillTask('winamp.exe');
end;
Всегда рад помочь!

Последний раз редактировалось rpy3uH; 24.10.2010 в 15:31.
Terran вне форума Ответить с цитированием
Старый 21.10.2010, 18:40   #7
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
uses
Tlhelp32,...

function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNA PPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProces sEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFil e) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
KillTask('winamp.exe');
end;
это все конечно работает, но! не так как хотелось бы, допустим, процессы, у которых нету окна эта функция не закрывает!???
AlienNation вне форума Ответить с цитированием
Старый 21.10.2010, 19:04   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

AlienNation, ничего подобного.
поиск идет по имени исполняемого файла, а не по окну.

может вы пытаетесь закрыть кого-то системного? или того кто защитился?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.10.2010, 02:24   #9
alphaxprime
 
Регистрация: 09.10.2010
Сообщений: 4
По умолчанию

cmd.exe:
taskkill /im iexplore.exe /f (<--принудительно)
alphaxprime вне форума Ответить с цитированием
Старый 28.12.2011, 13:41   #10
ProgMaster
Новичок
Джуниор
 
Аватар для ProgMaster
 
Регистрация: 13.11.2011
Сообщений: 82
Сообщение

Код:
WinExec('taskkill /f /im process.exe',SW_HIDE);
Но он боится завершать критические системные процессы такие как csrss.exe,winlogon.exe
И rpy3uH, вы таким образом не убьёте системный процесс, как HPIsvc.exe,nvsvc32.exe

Последний раз редактировалось ProgMaster; 28.12.2011 в 13:43.
ProgMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать угол зная X и Y Dj_smart Общие вопросы Delphi 12 12.05.2009 05:09
Убить поток Баламут Общие вопросы Delphi 3 22.03.2008 05:04
перенос данных!!! SOS начальник готов УБИТЬ((( Exo Microsoft Office Excel 25 11.02.2008 16:18
Как завершить процесс, зная его имя Никки Win Api 6 14.01.2008 14:04