Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95

Как завершить процесс зная его имя?

01.10.2016, 20:28. Показов 2896. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу убить процесс зная его имя, но, он не убивается. ((
Как это можно сделать?
Пишу на Embarcadero XE8

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
DWORD GetProcessByExeName(char *ExeName)
{
    DWORD Pid;
 
    PROCESSENTRY32 pe32;
        pe32.dwSize = sizeof(PROCESSENTRY32);
 
    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
    if( hProcessSnap == INVALID_HANDLE_VALUE)
    {
        MessageBox(NULL, "Error = " + GetLastError() , "Error (GetProcessByExeName)", MB_OK|MB_ICONERROR);
        return false;
    }
 
    if ( Process32First(hProcessSnap, &pe32) )
        {
            do
                {
                    if ( strcmpi(pe32.szExeFile, ExeName) == 0)
                        {
                                CloseHandle(hProcessSnap);
                                return pe32.th32ProcessID;
                        }
                } while ( Process32Next(hProcessSnap, &pe32) );
        }
 
    CloseHandle(hProcessSnap);
    return 0;
}
 
 
void  TMainForm::TaskKill()
{
 
 
        DWORD PID = GetProcessByExeName("calc.exe");
        if ( !PID )
        {
            ShowMessage("Процесс не найден");
        }
        else
        {
        HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID );
            if ( TerminateProcess(hProcess, 0) )
            {
                ShowMessage("Процесс убит");
            }
            else
            {
                ShowMessage("Не могу убить процесс");
            }
        }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2016, 20:28
Ответы с готовыми решениями:

Убить процесс, зная имя.exe
Всем привет!! Подскажите как убить процесс, зная его имя, есть вот такой примерчик: short KillThisProcess=0; HANDLE...

Как узнать имя окна (обьекта), зная его хэндл?
Допустим, хэндл окна я узнаю так: HANDLE h=WindowFromPoint(Mouse->CursorPos); Класс так: GetClassName(h,p,100); А как узнать имя...

Как можно завершить процесс зная его имя ?
как можно завершить процесс зная его имя ?

6
01.10.2016, 20:43

Не по теме:

Ну и какой код ошибки?
Builder это мутант из Delphi и Си. VCL там идентично. Может он всё же может: ShowMessage("GetProcessByExeName:\r\n\r\ n\r\n"+SysErrorMessage(GetLastError()));

0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
01.10.2016, 21:38  [ТС]
Выводится сообщение "Не могу убить процесс", а код приведенный ниже сообщений об ошибках не выводит.

C++
1
2
3
4
5
  if( hProcessSnap == INVALID_HANDLE_VALUE)
    {
        MessageBox(NULL, "Error = " + GetLastError() , "Error (GetProcessByExeName)", MB_OK|MB_ICONERROR);
        return false;
    }
Дополнение
ShowMessage("Не могу убить процесс");
ShowMessage("GetProcessByExeName:\r\n\r\ n\r\n"+SysErrorMessage(GetLastError()));

Выдало сообщение "Неверный дескриптор"
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
01.10.2016, 21:42
C++
1
2
3
4
5
6
7
8
            if ( TerminateProcess(hProcess, 0) )
            {
                ShowMessage("Процесс убит");
            }
            else
            {
                ShowMessage(SysErrorMessage(GetLastError()));
            }
Что выдает?
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
01.10.2016, 22:00  [ТС]
C++
1
2
3
4
5
6
7
8
    if ( TerminateProcess(hProcess, 0) )
            {
                ShowMessage("Процесс убит");
            }
            else
            {
                ShowMessage("Не могу убить процесс: " + SysErrorMessage(GetLastError()) )  ;
            }
Выдает: Не могу убить процесс: Неверный дескриптор
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
01.10.2016, 22:07
Попробуй 43 строку заменить на
C++
1
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, TRUE, PID);
2
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
01.10.2016, 22:14  [ТС]
Спасибо, так работает!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   DWORD PID = GetProcessByExeName("calc.exe");
        if ( !PID )
        {
            ShowMessage("Процесс не найден");
        }
        else
        {
        HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, TRUE, PID);
            if ( TerminateProcess(hProcess, 0) )
            {
                ShowMessage("Процесс убит");
            }
            else
            {
                ShowMessage("Не могу убить процесс");
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2016, 22:14
Помогаю со студенческими работами здесь

Завершить процесс батника, зная его имя файла
Здравствуйте мальчики... Вот сижу я на работе запустила много bat файлов ...потом сама запуталась что где..начала путаться когда убрала это...

Как завершить процесс, зная имя экзешника?
у меня есть textBox2, в него идет ссылка на файла. Пример C:\Users\admin\Desktop\zz.exe Мне нужно убить/закрыть этот процесс...

Как найти процесс, зная полное имя файла
Мне дано полное имя файла, и по этому файлу я должен найти соответственный процесс(если он запущен).

Как узнать полное имя файла зная его краткое имя?
например при запуске программы достаточно написать "Excel" или "Calc" при этом система уже в курсе где этот файл лежит. как программно...

Как определить самый новый процесс и завершить его?
привет. не подскажете как завершить самый новый процесс, необходимо сделать ч/з kill -9 может с начало вывести список процессов и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru