[ `and @ 22.09.2004. 18:52 ] @
Jel moze neko da mi napise neki source za C\C++ ... koji ce da ispisuje ProcessID svih aktivnih programa. Ili bar da mi kaze kako da to uradim ... koje API da koristim i kako ... !? tnx |
[ `and @ 22.09.2004. 18:52 ] @
[ Hallman @ 23.09.2004. 21:21 ] @
Pogledaj artikal "CreateToolhelp32Snapshot" u MSDN dokumentaciji ili na sajtu, to je deo Tool Help artikla iz Win32 SDK sekcije, taj artikal pruza vecinu apija za procese.
Taj api nije dobro podrzan za WinNT, ali i dalje lista ID-ove aktivnih procesa, sto je tebi dovoljno za vecinu stvari. [ Milan Aksic @ 26.09.2004. 00:26 ] @
Za NT seriju (pri prevodjenju je potrebno dodati psapi.lib import biblioteku):
Code: #include <windows.h> #include <stdio.h> #include <psapi.h> int main() { DWORD pids[1024], priv, brpids, i; if (!EnumProcesses(pids, sizeof(pids), &priv)) return 1; brpids = priv/sizeof(DWORD); for (i = 0; i < brpids; i++) printf("%4d\n", pids[i]); return 0; } [ `and @ 26.09.2004. 01:52 ] @
tnx
[ `and @ 28.09.2004. 13:41 ] @
@passenger Jel mozes da dodas u taj kod jos i da ispisuje pored PID-a ime procesa i path ? tnx [ `and @ 29.09.2004. 11:05 ] @
Dosao sam do ovog koda ( dole ) ali bi bilo lepo ako bi neko dodao jos samo da ispisuje putanju do programa . tnx
#include <windows.h> #include <stdio.h> #include <psapi.h> void PrintProcessNameAndID( DWORD processID ) { char szProcessName[MAX_PATH] = "unknown"; HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); } else return; } else return; printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess ); } void main( ) { DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; cProcesses = cbNeeded / sizeof(DWORD); for ( i = 0; i < cProcesses; i++ ) PrintProcessNameAndID( aProcesses ); } [ Milan Aksic @ 29.09.2004. 18:35 ] @
Citat: `and: @passenger Jel mozes da dodas u taj kod jos i da ispisuje pored PID-a ime procesa i path ? tnx Odgovor si verovatno mogao da pronadjes malo pazljivijim citanjem MSDN dokumentacije. Vidim da si vec saznao kako da ispisujes ime procesa. Za dobijanje pune putanje do programa ciji je proces (pid), mogao bi da koristis slicnu funkciju, s tim da umesto "GetModuleBaseName()" pozoves npr. "GetModuleFileNameEx()" funkciju. Code: void PrintPIDPath(DWORD pid) { char szProcessPath[MAX_PATH]; HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid ); if ( hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) GetModuleFileNameEx(hProcess, hMod, szProcessPath, sizeof(szProcessPath)); } printf( " %s\n", szProcessPath); CloseHandle( hProcess ); } P.S. Bilo bi pozeljno da u buducim poruka kood postavljas izmedju "code" tagova, radi bolje preglednosti. [ `and @ 30.09.2004. 00:48 ] @
tnx
ps: potrudicu se Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|