Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

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

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

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

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

Код:

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
Репутация: 8

icq: 623310388
По умолчанию

Цитата:
Сообщение от 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
Адрес: Москва
Сообщений: 20,997
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

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

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

cmd.exe:
taskkill /im iexplore.exe /f (<--принудительно)
alphaxprime вне форума   Ответить с цитированием
Старый 28.12.2011, 13:41   #10
ProgMaster
Новичок
 
Аватар для ProgMaster
 
Регистрация: 13.11.2011
Адрес: This operation has been cancelled due to restrictions in effect on this computer.
Сообщений: 82
Репутация: -48
Сообщение

Код:

WinExec('taskkill /f /im process.exe',SW_HIDE);

Но он боится завершать критические системные процессы такие как csrss.exe,winlogon.exe
И rpy3uH, вы таким образом не убьёте системный процесс, как HPIsvc.exe,nvsvc32.exe

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


10:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru