Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/41: Рейтинг темы: голосов - 41, средняя оценка - 4.76
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113

Вывод списка и завершение процессов

03.12.2015, 19:18. Показов 8942. Ответов 60

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

У меня собственно первый вопрос. (Раньше я не работал в Borland C++).
Как получить список процессов в ListBox?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2015, 19:18
Ответы с готовыми решениями:

Вывод списка активных процессов в builder 2010
Всем привет. Такая проблема: код для вывода списка процессов отлично работает в 6-м билдере. Вот он: PACKAGE void __fastcall...

Завершение всех запущенных процессов из находящегося в текстовом файле списка запрещенных к запуску процессов
пожалуйста помогите написать батник. Задать в текстовом файле список процессов, запрещенных к запуску. Создать командный файл,...

Вывод списка процессов и их Id
Помогите плиз хочу вывести полный список процессов, а выводит только 1 процесс. В listBox вообще не выводит ничего. private void...

60
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
03.12.2015, 19:30
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TList *List = new TList;
HWND h = Handle;
wchar_t buf[128];
List->Clear();
 ListBox1->Items->Clear();
 do {
    h = GetNextWindow(h, GW_HWNDNEXT);
    GetWindowText(h, buf, 128);
 
    if (buf[0])   {     List->Add(h);
       ListBox1->Items->Add(buf);  }
 
    } while (h != NULL);
 ListBox1->ItemIndex = 0;
 ListBox1->Update();

PC если BCB6 , то вместо wchar_t , укажите char
1
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
03.12.2015, 19:37  [ТС]
Спасибо, только мне вывело в список по именам заголовков окон, а мне желательно как бы в диспетчере задач.

имя.exe
имя.exe


и тд.

И желательно код который на кнопку завершал бы выбранный процесс в ListBox.
Спасибо за ответ еще раз)
Миниатюры
Вывод списка и завершение процессов  
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
04.12.2015, 10:03
Зафиксировать имена процессов
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
04.12.2015, 10:31
SatanaXIII, По ссылке получить pid, выше в примере я просто храню хендлы в TList, то есть список уже зафиксирован.
Тут другое, надо понять есть ли процесс приложение,а не служба или еще чего....
Скорее всего нужно каждый хендл смотреть на предмет как и откуда запущен.
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
05.12.2015, 15:44  [ТС]
Не обязательно наверное делать что-то сложное. Пусь это будет по возможности. Если есть возможность удалить - то процесс удаляется, а если не смогла программа удалить, пускай ошибку выводит, да и всё!
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.12.2015, 15:52
это я написал не просто как удалить (это не так сложно,притом если список хендлов уже есть), а то как определить приложение это или процесс...Вам как я понял именно приложения нужны(в моем варианте все скопом).
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
05.12.2015, 16:53  [ТС]
Цитирую полное задание курсового проекта:

Написать программу на языке программирования C++ в среде Borland C++ Builder, которая предназначена для осмотра запущенных процессов в ОС Windows. Программа дает возможность определения полного пути до файла процесса, его приоритетность и возможность завершения данного процесса.

Вот полное задание. Надеюсь это реализуемо, потому что это еще только пол беды. Еще нужно мне будет кучу документации по ней составлять(

Добавлено через 27 минут
То есть тут службы как бы не упоминаются, я не знаю нужно-ли их тоже, либо нет.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.12.2015, 17:05
Да, луче тогда надо было сразу задание (оставляешь что выше написал Вам,а так же + что ниже).

1) Глобально объявляешь TList *List = new TList; (убираешь его из кода что выше написал)
2) В h файле добавляешь #include <tlhelp32.h>
3) На форму кидаешь еще одну кнопку для удаления процесса, она будет удалять то что ты выбрал в лист боксе

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DWORD  PID;
GetWindowThreadProcessId((HWND)List->Items[ListBox1->ItemIndex], &PID);
 
DWORD ExitCode;
HANDLE hp;
bool ret = true;
 
if(PID)
  {
    hp = OpenProcess(PROCESS_ALL_ACCESS, true, PID);
    if (hp)
        {
        GetExitCodeProcess(hp, &ExitCode);
        ret = TerminateProcess(hp, ExitCode);
        CloseHandle(hp);
        }
    }
4) На форму кидаешь кнопку (отображения пути файла,ниже код), так же кидаешь TMemo, где будет сам путь

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Memo3->Clear();
 
DWORD  PID;
GetWindowThreadProcessId((HWND)List->Items[ListBox1->ItemIndex], &PID);
 
 
 HANDLE    ss(CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID));
  if ( ss != INVALID_HANDLE_VALUE )
  {
  MODULEENTRY32 lpme = { sizeof(MODULEENTRY32) };
 
    for ( bool ok(Module32First(ss, &lpme)); ok; ok = Module32Next(ss, &lpme) )
    {
 
       Memo3->Lines->Add(lpme.szExePath);
       break;
 
    }
 
    CloseHandle(ss);
  }
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
20.01.2016, 20:33  [ТС]
Dinkin, ошибки выдает. Получать список умеет отлично. А вот завершать процесс, или отображать путь к нему. Ошибка. Не могли бы вы пожалуйста сделать проект и прикрепить архивом.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.01.2016, 21:24
проект накидать, а если у нас среды разные?, то Вы его и неперсобирете...напишите луче какие ошибки.
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
20.01.2016, 21:34  [ТС]
Dinkin, ну тогда начнем по порядку. Я вывожу список процессов вот так
C++
1
ListBox1->Items->Add(ProcEntry.szExeFile);
Если я хочу вывести ID процессов, а не их имена, то соответственно мне необходимо написать вот так.
C++
1
ListBox1->Items->Add(ProcEntry.th32ProcessID);
Однако не все так просто. Я вывожу именами. Т.к это указано в задании курсового проекта. Если же я захочу убить выбранный процесс в ListBox1 по нажатию кнопки, то как мне это сделать, и где мне найти PID для этой задачи, есть идея создать массив и при получении в массив записывать PID а в ListBox имена. Чтобы потом по индексу определять что за процесс. Помогите такое реализовать. Это пока что одна из задач. Далее будут еще, но думаю по легче.

Добавлено через 2 минуты
Dinkin,
Цитата Сообщение от Dinkin Посмотреть сообщение
3) На форму кидаешь еще одну кнопку для удаления процесса, она будет удалять то что ты выбрал в лист боксе
Для завершения процесса использовал ваш код. Однако, он выдает следующую ошибку...

"Project Project1.exe raised exception class EListError with message 'List index out of bounds (5)'. Process stopped. Use Step or Run to continue.".
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.01.2016, 21:42
В примере строиться сразу список имен процессов,а так же параллельно им строиться их hwnd

C++
1
2
3
4
5
6
7
...
 if (buf[0])  
 {    
     List->Add(h);//Запоминаем HWND
     ListBox1->Items->Add(buf);  //Добавляем его имя
 }
...
Далее мы получаем PID от тех HWND что запомнили (тоесть какую программу выбрали в лист бокс, той и получаем) (типа выбран не существующий элемент массива)

C++
1
2
3
4
...
DWORD  PID;
GetWindowThreadProcessId((HWND)List->Items[ListBox1->ItemIndex], &PID);
...
Ошибка что у Вас говрит, что Вы или не выбрали программу или использовали сортировку в лист боксе(при этом сбился список hwnd)
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
20.01.2016, 21:50  [ТС]
Dinkin, и как исправить? Потому что я если честно, ничерта не понял. Делал все поэтапно за вами. Код полностью ваш. Выводит нажатием на 1 кнопку. И на вторую должен удалять, но не удаляет...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.01.2016, 21:51
выложите свой проект
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
20.01.2016, 22:12  [ТС]
Dinkin, надеюсь на вашу помощь.
Вложения
Тип файла: rar ProcessProject.rar (2.01 Мб, 32 просмотров)
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.01.2016, 22:20
Поиск и формирование процессов не мой код у Вас и в нем не формируется список hwnd
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
20.01.2016, 22:27  [ТС]
Dinkin, вставил ваш. Все ровно та же ошибка.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.01.2016, 22:32
еще раз пришлите проект с моим кодом (я Вам теперь не доверяю) = )
0
 Аватар для Vladislav717
7 / 7 / 3
Регистрация: 03.12.2015
Сообщений: 113
20.01.2016, 22:36  [ТС]
Dinkin, довольно таки странно что Вы не можете скачать выше и просто вставить Ваш код. Ну давай-те.
Вложения
Тип файла: rar Project.rar (2.95 Мб, 49 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2016, 22:36
Помогаю со студенческими работами здесь

Вывод списка процессов
Нужно написать программу на С\С++ для Linux, которая выводит список процессов, список потоков, информацию о процессе, занятые...

Вывод списка исполняемых процессов
Ребят помогите нужно каким либо способом вывести список исполняемых процессов возможно есть у кого то скрипт поделитесь пожалуйста

Вывод списка запущенных процессов в ComboBoxEx
Здравствуйте, подскажите как вывести список запущенных процессов x86 и x64 в компонент &quot;ComboBoxEx1&quot; с иконками. Чтоб...

Вывод списка процессов компьютера, занимающих от 1 МБ до 10 МБ памяти
Создать задание которое выведет список процессов компьютера занимающих от 1МБ до 10 МБ памяти. Помогите пожалуйста!

Завершение процессов
Ребята ! нужна ваша помощь !!! Как закрыть все процессы кроме определенных ??? Желательно на примере . Спасибо.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Философия технологии
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