BCB fehler??
-
hi!
habe ein großes Problem.
Ich möchte mir die EXE namen der WindowsTasks anzeigen lassen... dazu habe ich mir folgenden code der MSDN mal angesehn und versucht zu compilieren:#include <windows.h> #include <stdio.h> #include "psapi.h" void PrintProcessNameAndID( DWORD processID ) { char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); } else return; } else return; // Print the process name and identifier. printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess ); } void main( ) { // Get the list of process identifiers. DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i++ ) PrintProcessNameAndID( aProcesses[i] ); }
Leider lässt sich der orginal MSDN code nicht im BCB 5 compilieren.
Er meldet zu EnumProcesses, EnumProcessModules und GetModuleBaseNameA:
Unresolved External.Kann mir jemand helfen?
MfG
Matthias
-
du musst die funktionsadresse aus der zugehörigen bibliothek (psapi.dll) laden! hier ein kleiner ansatz...
[cpp]
bool InitPSApi()
{
HANDLE hPSApi = LoadLibrary("psapi.dll");if (hPSApi)
{
// mit **GetProcAddress die Adresse der Funktionen auslesen
**
return true;
}return false;
}[/cpp]aber dafür bist du eh im falschen forum, dass ist API!
[ Dieser Beitrag wurde am 16.06.2003 um 15:38 Uhr von Sunday editiert. ]