Anwendungen vom Taskmanager auflisten
-
Hi,
ich suche eine Möglichkeit, alle laufenden Anwendungen vom Taskmanager aufzulisten.
Den folgenden Code hab ich im Internet gefunden#include <windows.h> #include <stdio.h> #include <tchar.h> #include <psapi.h> #include <conio.h> #include <iostream> using namespace std; int main() { SetConsoleTitle("Process list"); DWORD ProcessesIDs[50], cbNeeded, cProcesses; unsigned int i; TCHAR szProcessName[50] = TEXT("<unknown>"); if (!EnumProcesses( ProcessesIDs, sizeof(ProcessesIDs), &cbNeeded )) return 0; cProcesses = cbNeeded / sizeof(DWORD); for ( i = 0; i < cProcesses; i++ ) { HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessesIDs[i] ); if (NULL != hProcess ) { GetModuleBaseName( hProcess, NULL, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } HWND h = GetTopWindow(0 ); char WindowText[256]; while (h) { DWORD pid; DWORD dwTheardId = GetWindowThreadProcessId( h,&pid); if (pid == ProcessesIDs[i]) { GetWindowTextA(h, WindowText, 256); break; } h = GetNextWindow(h , GW_HWNDNEXT); } _tprintf(TEXT("Process name: %s, PID: %u \n"), szProcessName, ProcessesIDs[i]); _tprintf(TEXT("Window Text: %s\n\n"), WindowText); CloseHandle(hProcess); } getch(); }das bringt mich zwar schon weiter aber das Problem ist, dass z.B. Firefox auch mehrere Fenster offen haben kann.
Wäre nett wenn ihr mir helfen könntet..
Vielen Dank
Goodies
-
bei Firefox wirst du auch ein Problem haben.... Firefox startet nur einen Prozess für alle Fenster. Anders als z.B. der IE, der für jedes Fenster einen eigenen Prozess startet.
-
genau das ist mein Problem

ich hoffe es hat trotzdem einer ne Idee wie ich das lösen kann
-
Hallo,
also es sollte dir nicht nur reichen, Code von irgendwo her zu nehmen, sondern ihn auch zu verstehen versuchen. Denn dann könntest du erkennen, wo du ändern musst oder kannst, musst nur bereit sein, ein paar Funktionen nachzuschlagen, was die denn so tun. Mein Vorschlag trotzdem:
// bis hier gleicher Code, dann: if (NULL != hProcess ) { GetModuleBaseName( hProcess, NULL, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } _tprintf(TEXT("Process name: %s, PID: %u \n"), szProcessName, ProcessesIDs[i]); HWND h = GetTopWindow(0 ); char WindowText[256]; while (h) { DWORD pid; DWORD dwTheardId = GetWindowThreadProcessId( h,&pid); if (pid == ProcessesIDs[i]) { GetWindowTextA(h, WindowText, 256); _tprintf(TEXT("Window Text: %s\n"), WindowText); // break entfernt, damit alle Fenster gefunden werden } h = GetNextWindow(h , GW_HWNDNEXT); } puts("\n"); CloseHandle(hProcess); } getch(); }zwutz schrieb:
Anders als z.B. der IE, der für jedes Fenster einen eigenen Prozess startet.
Das stimmt so generell nicht...
MfG,
Probe-Nutzer
-
ich danke dir

funktioniert super
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.