Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <tlhelp32.h>
- #include <stdio.h>
- #include <tchar.h>
- BOOL GetProcessList();
- BOOL ListProcessModules(DWORD PID);
- BOOL ListProcessThreads(DWORD OwnerPID); //Parent PID
- int main()
- {
- GetProcessList();
- system("pause");
- return 0;
- }
- BOOL GetProcessList()
- {
- HANDLE Process_Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //дискриптор
- //Cоздается снапшот процессов, модулей ...
- //Cнапшот чего именно мы хотим получить | параметр dwProcessId задает идентификатор процесса, для которого создается снапшот.
- //Возвращается хэндл снапшота
- if (Process_Snap == INVALID_HANDLE_VALUE)
- {
- return(FALSE);
- }
- HANDLE Process;
- PROCESSENTRY32 P_E_32; // список процессов
- P_E_32.dwSize = sizeof(PROCESSENTRY32);
- DWORD Class_of_Priority;
- if (!Process32First(Process_Snap, &P_E_32))
- {
- CloseHandle(Process_Snap);
- return(FALSE);
- }
- //Process32First принимает хэндл, полученный от CreateToolhelp32Snapshot,
- //вызванной с dwFlags = TH32CS_SNAPPROCESS, а также указатель на структуру PROCESSENTRY32.
- //Перед вызовом процедуры поле dwSize этой структуры должно быть установлено в sizeof(PROCESSENTRY32).
- //В случае успеха возвращается TRUE, а в peProcessEntry записывается информация о первом процессе
- do
- {
- printf("\nPROCESS NAME: %s", P_E_32.szExeFile);
- Class_of_Priority = 0;
- Process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, P_E_32.th32ProcessID);
- Class_of_Priority = GetPriorityClass(Process);
- CloseHandle(Process);
- printf("\nProcess ID = 0x%08X", P_E_32.th32ProcessID);
- printf("\nThread count = %d", P_E_32.cntThreads);
- printf("\nParent process ID = 0x%08X", P_E_32.th32ParentProcessID);
- printf("\nPriority base = %d", P_E_32.pcPriClassBase);
- printf("\n");
- ListProcessModules(P_E_32.th32ProcessID);
- ListProcessThreads(P_E_32.th32ProcessID);
- } while (Process32Next(Process_Snap, &P_E_32));
- CloseHandle(Process_Snap);
- return(TRUE);
- }
- BOOL ListProcessModules(DWORD PID)
- {
- HANDLE Module_Snap = INVALID_HANDLE_VALUE;
- MODULEENTRY32 M_E_32; //перечисляет модули в заданном процессе
- Module_Snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
- if (Module_Snap == INVALID_HANDLE_VALUE)
- {
- return(FALSE);
- }
- M_E_32.dwSize = sizeof(MODULEENTRY32);
- if (!Module32First(Module_Snap, &M_E_32))
- {
- CloseHandle(Module_Snap);
- return(FALSE);
- }
- do
- {
- printf("\n\nMODULE NAME: %s", M_E_32.szModule);
- printf("\nProcess ID = 0x%08X", M_E_32.th32ProcessID);
- printf("\nBase Size = %d", M_E_32.modBaseSize);
- printf("\nPath = %s", M_E_32.szExePath);
- printf("\n");
- } while (Module32Next(Module_Snap, &M_E_32));
- CloseHandle(Module_Snap);
- return(TRUE);
- }
- BOOL ListProcessThreads(DWORD OwnerPID)
- {
- HANDLE Thread_Snap = INVALID_HANDLE_VALUE;
- THREADENTRY32 T_E_32; //перечисляет потоки в заданном процессе
- Thread_Snap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
- if (Thread_Snap == INVALID_HANDLE_VALUE)
- {
- return(FALSE);
- }
- T_E_32.dwSize = sizeof(THREADENTRY32);
- if (!Thread32First(Thread_Snap, &T_E_32))
- {
- CloseHandle(Thread_Snap);
- return(FALSE);
- }
- do
- {
- if (T_E_32.th32OwnerProcessID == OwnerPID)
- {
- printf("\n\nTHREAD ID = 0x%08X", T_E_32.th32ThreadID);
- printf("\nBase Priority = %d", T_E_32.tpBasePri);
- printf("\nDelta Priority = %d", T_E_32.tpDeltaPri);
- printf("\n");
- }
- } while (Thread32Next(Thread_Snap, &T_E_32));
- CloseHandle(Thread_Snap);
- return(TRUE);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement