Количество процессов с наименьшим приоритетом (WinAPI)

Как определить количество процессов с наименьшим приоритетом и как для любого выбранного пользователем процесса вывести информацию?
Помогите мне, пожалуйста.
Срочно нужна помощь.
Скриншот моей программы:
Начало определения моего приложения:

#include <Windows.h> // WinAPI
#include <TlHelp32.h> // содержит описания функций для работы с процессами
#include <stddef.h> // определяет макрос offsetof
#include <tchar.h> // определяет макросы с префиксом _tcs для сопостовления кодировок

HANDLE hSnapshot;
PROCESSENTRY32 Entry;
bool flag; // флаг работы Snapshot

Вот код моей программы:

#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_НайтиПроцесс, "Найти процесс");
         }

Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

  • Наш лицезионный софт.
  • документы со всей необходимой доп. информацией.
  • постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> obrabotka-zakazow.tk <<

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.