Re[3]: ShellExecuteEx
От: Mink Россия  
Дата: 06.08.02 15:33
Оценка:
Здравствуйте 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);
      }
Сила, она в ньютонах
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.