как захватить все запущенные приложения из Диспетчера задач windows
Привет,
Я работаю над проектом на c++(code:: blocks), чтобы получить список всех запущенных приложений в windows(а не процессов), как и на вкладке Приложения диспетчера задач. И я использую код ниже
#include <windows.h> //windows.h #include <stdio.h> //stdio.h #include <tchar.h> //tchsr.h #include <psapi.h> //psapi.h #include <iostream> //iostream using namespace std; HWND g_HWND = NULL; TCHAR lpstring[500]; HWND hwnd; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM processID) { DWORD lpdwProcessId; g_HWND = NULL; int nmax; if(IsWindowVisible(hwnd)) { GetWindowThreadProcessId(hwnd, &lpdwProcessId); GetWindowText(hwnd, lpstring, nmax); if (lpdwProcessId == processID) { g_HWND=hwnd; return FALSE; } } return TRUE; } void PrintProcessNameAndID(DWORD processID) { TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>"); HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID); DWORD pass = 0; DWORD processIDReturn = -1; if (NULL != hProcess) { HMODULE hMod; DWORD cbNeeded; if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) pass = GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)); } EnumWindows(EnumWindowsProc, processID); if ((g_HWND != NULL) && (pass != 0)) { if(!_tcsstr(_T("Start""Program Manager"),lpstring)) { _tprintf(TEXT("%s (PID: %u)\n\n"),lpstring,processID); } } CloseHandle(hProcess); } int main(void) { DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) return 1; cProcesses = cbNeeded / sizeof(DWORD); for (i = 0; i < cProcesses; i++) { if (aProcesses[i] != 0) { PrintProcessNameAndID(aProcesses[i]); } } return 0; }
Но этот код читает только " подпись "и,следовательно,не читает такие приложения, как"мой компьютер", имя папки, Norton antivirus и многие другие приложения без подписи.
Пожалуйста, помогите мне получить название этих приложений тоже.Я очень устал от этого за последние три месяца и очень хочу закончить это.
Спасибо Вам в предвкушении
сурьякант