Здравствуйте Small, Вы писали:
S>Здравствуйте Mink, Вы писали:
M>>Используй PSAPI или ToolHelp функции. Но даже с ними напрямую, похоже, не получится, придется перебирать все процессы в системе и сравнивать имеющийся хэндл.
S>Такую гадость я никогда в жизни использовать не буду — для этого требуются отдельные dll-ки + это совершенно бесполезно. В конечном счете все они полуают информацию о запущенных процессах с помощью функции NtQueryDirectorySystemInformation с классом информации 5. Но она не возвращает информации о хендлах процессов, так как иони имеют значение только для конкретного процесса. NtQueryDirectorySystemInformation возвращает только общезначимую для системы информацию.
S>Значит и предлдагаемые тобой функции не возвращают нужной мне информации (ToolHelp — я проверил
)
Я имел в виду следующий способ
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++ )
{
HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i]));
if(ТвойХэндл == hProc)
{
//do something
}
else
CloseHandle(hProc);
}