Radek Chalupa   vývoj software, konzultace a školení programování
 DomůČlánkyUkázky kóduKonzultace a školeníVývoj softwareFreewareKontakt

Výpis seznamu spuštěných procesů ve Windows ve Win API.  C++ a Windows API

#include <stdio.h>
#include <windows.h>
#include <locale.h>
#include <psapi.h>
#include <assert.h>

int main()
{
	static const size_t max_delka_cesty = static_cast(32768);
	_wsetlocale(LC_ALL, L"Czech");
	DWORD procesy[1024];
	HMODULE h_mod[1024];
	DWORD velikost;
	DWORD pocet;
	HANDLE h_proces;
	if (EnumProcesses(procesy, sizeof(procesy), &velikost))
	{
		wchar_t* soubor = (wchar_t*)malloc(max_delka_cesty);
		pocet = velikost / sizeof(DWORD);
		for (size_t i = 0; i < (size_t)pocet; i++)
		{
			h_proces = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
				FALSE, (DWORD)procesy[i]);
			if (!h_proces)
				continue;
			if (EnumProcessModules(h_proces, h_mod, sizeof(h_mod), &velikost))
			{
				if (GetModuleFileNameEx(h_proces, h_mod[0], soubor, max_delka_cesty / sizeof(wchar_t)))
				{
					wprintf(L"%s\n", soubor);
				}
			}
		}
		free(soubor);
	}
	printf("hotovo\n");
	getchar();
	return EXIT_SUCCESS;
}

Copyright © 2019 - Radek Chalupa