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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2017, 21:02   #1
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Сообщение Количество процессов с наименьшим приоритетом

Как определить количество процессов с наименьшим приоритетом и как для любого выбранного пользователем процесса вывести информацию?
Помогите мне, пожалуйста.
Вот код моей программы:
Код:
#pragma endregion
	private: System::Void button_найти_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
				 // создание моментального снимка
				 hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
				 if (hSnapshot == INVALID_HANDLE_VALUE)
				 {
					 MessageBox::Show("Ошибка! Снимок не был создан.");
					 return;
				 }
				 // получаем информацию о первом процессе
				 Entry.dwSize = sizeof(Entry);
				 Process32First(hSnapshot, &Entry); // сведения о первом процессе
				 if(!Process32First(hSnapshot, &Entry)) {
					 MessageBox::Show("Процесс не найден.");
					 CloseHandle(hSnapshot);
					 return;
				 }
				 do
				 {
					 listBoxпроцессы -> Items -> Add((Entry.th32ProcessID).ToString());
				 }
				 while(Process32Next(hSnapshot, &Entry));
				 labelkolvproc -> Visible = true;
				 int number = listBoxпроцессы -> Items -> Count; // подсчет количества элементов в списке
				 labelkolvproc -> Text = number.ToString();
				 flag = true; // установка флага: снимок сделан, в память занесены данные
			 }
private: System::Void button_очистить_Click(System::Object^  sender, System::EventArgs^  e) {
			 CloseHandle(hSnapshot); // очистка памяти
			 flag = false; // сброс флага
			 labelkolvproc -> Text = "0";
			 listBoxпроцессы -> Items -> Clear();
			 textBoxпроцессы -> Clear();
		 }
private: System::Void buttonзакрыть_Click(System::Object^  sender, System::EventArgs^  e) {
			 if(flag == true) {CloseHandle(hSnapshot);} // если флаг установлен, то освобождаем память
			 ExitProcess(0); // завершение процесса
			 Close();
		 }
private: System::Void listBoxпроцессы_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
			 TCHAR* ProcessName = NULL; // объявление переменной типа TCHAR*, символьный тип - аналог char
			 String^ temp = listBoxпроцессы -> SelectedItem -> ToString();
			 int ID = Int32::Parse(temp);

			 Process32First(hSnapshot, &Entry);
			 do
			 {
				 if(ID == Entry.th32ProcessID) // поиск совпадения по ID процесса
				 {
					 if(Entry.dwSize > offsetof(PROCESSENTRY32, szExeFile)) // проверка: заполнено ли имя процесса
					 { // offsetof - смещение члена szExeFile относительно начала его родительской структуры
						 // разбирается полное имя процесса: если символ "\\" существует, то отбрасываем его
						 ProcessName = _tcsrchr(Entry.szExeFile, _T('\\'));
						 if(ProcessName == NULL)
							 ProcessName = Entry.szExeFile;
						 // преобразование типов TCHAR* в System::String (String^)
						 String^ Name = gcnew String(ProcessName);
						 textBoxпроцессы -> Text = "Имя процесса: " + Name + Environment::NewLine + ", "; // запись имени процесса в textBoxпроцессы
						 textBoxпроцессы -> Text += "PID: " + Entry.th32ProcessID + Environment::NewLine + ", ";
						 textBoxпроцессы -> Text += "PPID: " + Entry.th32ParentProcessID + Environment::NewLine + ". ";
					}
				 }
			 }
			 while (Process32Next(hSnapshot, &Entry));
		 }
private: System::Void button_найти_MouseHover(System::Object^  sender, System::EventArgs^  e) 
			 {
			 toolTip1 -> SetToolTip(button_найти, "Найти сведения");
			 }
private: System::Void button_очистить_MouseHover(System::Object^  sender, System::EventArgs^  e) {
			 toolTip1 -> SetToolTip(button_очистить, "Очистить");
		 }
private: System::Void buttonзакрыть_MouseHover(System::Object^  sender, System::EventArgs^  e) {
			 toolTip1 -> SetToolTip(buttonзакрыть, "Закрыть приложение");
		 }
private: System::Void найтиToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 this -> button_найти_Click(sender, e);
		 }
private: System::Void очиститьToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 this -> button_очистить_Click(sender, e);
		 }
private: System::Void выходToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 this -> buttonзакрыть_Click(sender, e);
		 }
private: System::Void найтиПроцессToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 this -> button_НайтиПроцесс_Click(sender, e);
		 }
private: System::Void button_НайтиПроцесс_Click(System::Object^  sender, System::EventArgs^  e) {

		 }
private: System::Void button_НайтиПроцесс_MouseHover(System::Object^  sender, System::EventArgs^  e) {
			 toolTip1 -> SetToolTip(button_НайтиПроцесс, "Найти процесс");
		 }
Начало определения моего приложения:
Код:
#include <Windows.h> // WinAPI
#include <TlHelp32.h> // содержит описания функций для работы с процессами
#include <stddef.h> // определяет макрос offsetof
#include <tchar.h> // определяет макросы с префиксом _tcs для сопостовления кодировок

HANDLE hSnapshot;
PROCESSENTRY32 Entry;
bool flag; // флаг работы Snapshot
Срочно нужна помощь.
Скриншот моей программы: Снимок.JPG

Последний раз редактировалось nightofpromises; 24.06.2017 в 10:07.
nightofpromises вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередь с приоритетом Milehor Помощь студентам 0 05.05.2016 20:04
есть неограниченное количество монет заданного номинала.Программа для размена заданной суммы наименьшим количеством монет (Паскаль xrystynka171 Помощь студентам 9 14.12.2013 14:50
сортировка с приоритетом(С++) lenka91 Помощь студентам 1 06.10.2013 21:39
Создание задания, добавление процессов, удаление процессов RAZOR1703 Win Api 12 16.02.2012 18:07
Очередь с приоритетом revaldo666 Общие вопросы C/C++ 4 26.06.2011 21:13