Консультация № 107049
28.10.2007, 01:16
0.00 руб.
0 3 3
Здраствуйте, Уважаемые Эксперты.
Подскажите пожалуйста с помощью какой функции можно узнать список запущенных процессов и список запущенных приложений в диспетчере задач и как это реализовать.
Заранее спасибо.

Обсуждение

Неизвестный
28.10.2007, 01:33
общий
это ответ
Здравствуйте, MARTALEX!
Привожу пример программы, которая сканирует запущенные процессы.

Приложение:
#include "stdafx.h"#include "windows.h"#include "iostream.h"#include "tlhelp32.h"int main(int argc, char* argv[]){ HANDLE hSnap = NULL; THREADENTRY32 te32; hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (hSnap!=NULL) { if (Thread32First(hSnap, &te32)) { cout << te32.th32ThreadID << " " << te32.th32OwnerProcessID << endl; while (Thread32Next(hSnap, &te32)) cout << te32.th32ThreadID << " " << te32.th32OwnerProcessID << endl; } } CloseHandle(hSnap); return 0;}
Неизвестный
28.10.2007, 07:55
общий
это ответ
Здравствуйте, MARTALEX!
Вот небольшой код - получает и выводит список процессов.
Структура PROCESSENTRY32 entry содержит данные о процессе.

Приложение:
#include <windows.h>#include <tlhelp32.h>#include <stdio.h>int main(int argc, char *argv[]){ HANDLE hSnapshot; PROCESSENTRY32 entry; hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); entry.dwSize = sizeof(entry); Process32First(hSnapshot, &entry); do { printf("%s (%d)\n", entry.szExeFile, entry.th32ProcessID); } while (Process32Next(hSnapshot, &entry )); CloseHandle(hSnapshot); return 0;}
Неизвестный
28.10.2007, 10:00
общий
это ответ
Здравствуйте, MARTALEX!
Вопрос кончено чуть не суда надо было задавать!А в системное программировани WinApi! так как для разных ОС разные способы! Для виндовс пример в приложении!

Вот отрывок из справочника
//________________________________________
Как получить список всех запущенных процессов и потоков?
Для Windows 9x:
используйте CreateToolhelp32Snapsot/ Process32First(Process32Next)/ Thread32First(Thread32Next).

Для WinNT:
NTQuerySystemInformation. А можно так: получаете список окон в системе (каким угодно способом, если нужны только процессы - можно ограничиться top-level), далее - GetWindowTreadProcessID - получаете ID процесса (и нити). OpenProcess - дает handle процесса.


Приложение:
#include "stdafx.h"#include "windows.h"#include "iostream.h"#include "tlhelp32.h"int main(int argc, char* argv[]){ HANDLE hSnap = NULL; THREADENTRY32 te32; hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (hSnap!=NULL) { if (Thread32First(hSnap, &te32)) { cout << te32.th32ThreadID << " " << te32.th32OwnerProcessID << endl; while (Thread32Next(hSnap, &te32)) cout << te32.th32ThreadID << " " << te32.th32OwnerProcessID << endl; } } CloseHandle(hSnap); return 0;}
Форма ответа