Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2

Завершение работы процесса

10.08.2011, 13:10. Показов 5378. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день форум!

Ну вот опять я! пытаюс завершить работу процесса
с перва пытаюс завершить процесс по его ID
C++
1
2
3
4
5
6
7
8
9
10
void Terminator(long pid)
 {
  HANDLE hProcess;
  DWORD ProcId;
  BOOL TermSucc;
  hProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);
  if(hProcess != NULL)
   TermSucc = TerminateProcess(hProcess,0);
   return;
 }
а шас пытаюс завершить его по его имени
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
bool GetProcessByExeName(DWORD *Pid,AnsiString ExeName)
 {
     HANDLE hProcessSnap = NULL;
     PROCESSENTRY32 pe32 = {0};
     AnsiString temp = "";
     hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);
     if(hProcessSnap == (void*)-1) return false;
     pe32.dwSize = sizeof(PROCESSENTRY32);
     if(Process32First(hProcessSnap,&pe32))
      temp = pe32.szExeFile;
      if((temp.UpperCase()).Pos(ExeName))
       {
           *Pid= pe32.th32ProcessID;
           CloseHandle(hProcessSnap);
           return true;
       }
       pe32.dwSize = sizeof(PROCESSENTRY32);
       while(Process32Next(hProcessSnap,&pe32))
        {
            temp =pe32.szExeFile;
            if((temp.UpperCase()).Pos(ExeName))
            {
                *Pid = pe32.th32ProcessID;
                CloseHandle(hProcessSnap);
                return true;
            }
            pe32.dwSize = sizeof(PROCESSENTRY32);
        }
        CloseHandle(hProcessSnap);
        *Pid=0;
        return false;
 }
и в конце обдинаю их и птаюс завершить процесс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 unsigned long PID;
 BOOL pbool = GetProcessByExeName(&PID,"DTLite.exe");
 if(pbool)
  {
   Terminator(PID);
      ShowMessage("Process terminated");
  }
  else
  {
      ShowMessage("Process is non closed");
  }
 //Application->Terminate();
}
ну вот соурс статья http://mimicria.ru/2009/03/31/процессы-и-службы/ от mimicria (спасибо его за ето). Но ребата проблема в том что процесс не завершается не вкоем случай!


Блин у меня Comodo стоит фаирволл, и его выключил но всё равно не завершается процесс, может кто нить обяснит в чем дела?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2011, 13:10
Ответы с готовыми решениями:

Завершение процесса
Доброго времени суток, помогите. вот так завершаю процесс HANDLE hProcess; BOOL pid; pid= тут какойто id ; ...

Запрет на завершение процесса.
Добрый день! Иногда с TaskManager можно встретить процесс которого если попробовать завершить то появляется сообщение что его завершить...

Ожидание завершение процесса
Добрый вечер. Разрабатываю мульти-инсталятор для одной программы. С установкой я разобрался, застрял на обновлении... Когда...

11
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.08.2011, 17:45
"Убить калькулятор"
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
#include <vcl.h>
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <psapi.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TerminateProcessByName(AnsiString aProcess)
{
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return 0;
    cProcesses = cbNeeded / sizeof(DWORD);
    for (UINT i = 0; i < cProcesses; i++ )
       {       TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
               HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
                                              PROCESS_VM_READ |
                                              PROCESS_TERMINATE,
                                              FALSE, aProcesses[i] );
               if (hProcess != NULL)
               {       HMODULE hMod;
                       DWORD cbNeeded;
                       if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
                                                &cbNeeded) )
                       {       GetModuleBaseName( hProcess, hMod, szProcessName,
                                                  sizeof(szProcessName)/sizeof(TCHAR) );
                               if (aProcess == szProcessName)
                                       if (!TerminateProcess(hProcess,0))
                                               MessageBox(NULL, "Cannot terminate process!", "Error!", MB_OK + MB_ICONERROR);
                       };
               };
               CloseHandle( hProcess );
       };
};
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Только перед компиляцией этого надо к проекту подключить "C:\Program Files\Borland\CBuilder6\Lib\Psdk\psapi.lib"
//Т.е. Project->AddToProject ...
bool b=TerminateProcessByName("calc.exe");
}
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
10.08.2011, 17:54  [ТС]
Avazart,
Шас попробую!
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.08.2011, 18:00
Мои исходники Builder 2009
По книге Архангельского
Вложения
Тип файла: rar Процессы.rar (1.94 Мб, 105 просмотров)
Тип файла: rar kill process.rar (1.95 Мб, 152 просмотров)
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
10.08.2011, 18:01  [ТС]
Avazart,
Шас иду ХАВАТЬ немного и потом попробою спс тебе!
0
 Аватар для nikitapel
37 / 37 / 6
Регистрация: 20.03.2011
Сообщений: 331
10.08.2011, 18:55
Programmer здесь обсуждалось.Все работает.Проверял
https://www.cyberforum.ru/cpp-... 75680.html
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
10.08.2011, 19:16
Цитата Сообщение от Programmer. Посмотреть сообщение
ну вот соурс статья http://mimicria.ru/2009/03/31/процессы-и-службы/ от mimicria (спасибо его за ето). Но ребата проблема в том что процесс не завершается не вкоем случай!
Проблема локализована, состояла в том, что я задавал имя процесса большими буквами.
В начало функции надо добавить строчку
C++
1
2
3
4
bool GetProcessByExeName(DWORD *Pid,AnsiString ExeName)
 {
         ExeName=ExeName.UpperCase();
...
Спасибо, статью поправил
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
10.08.2011, 23:14  [ТС]
Avazart,
В XE некак не работает не один пример

mimicria,
Не знаю зачем но не работает
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
11.08.2011, 08:02
Цитата Сообщение от Programmer. Посмотреть сообщение
mimicria,
Не знаю зачем но не работает
Попробовал специально на Daemon Tools, всё сработало.
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
11.08.2011, 10:38  [ТС]
mimicria,
А билдер у вас какой?
у меня XE версия!
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
11.08.2011, 11:09
BCB6.0
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
11.08.2011, 15:18  [ТС]
mimicria,
Наверное ето из того что у меня Builder XE...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2011, 15:18
Помогаю со студенческими работами здесь

Завершение процесса по его Id
Такая задачка помогите, вот прогу пишу, нужно чтобы выводила процессы и завершала. Сделал чтобы выводила процессы и также выводит ID...

Завершение процесса и его дочерних процессов
Доброе время суток! Подскажите, пожалуйста, как можно реализовать завершение процесса (зная его имя или PID) и всех его дочерних...

Аварийное завершение работы программы
Использую CodeGear C++ Builder 2007. Проект, на котором расположены компоненты: Treeview, Splinter, WebBrowser. Компилирую, все в порядке,...

Некорректное завершение работы сокет-клиента
Использую в сетевой программе компоненты TServerSocket и TClientSocket. Есть проблема: при некорректном завершении работы любого...

Завершение работы функции повторным нажатием горячих клавиш
При нажатии ALT + A начинает бесконечно работать функция. По идее, если нажать второй раз ALT + A, то функция должна прерваться, но как это...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru