2014-01-02 2 views
0
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); 
if (h != INVALID_HANDLE_VALUE) { 
    THREADENTRY32 te; 
    te.dwSize = sizeof(te); 
    if (Thread32First(h, &te)) { 
    do { 
    if (te.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) + 
         sizeof(te.th32OwnerProcessID)) { 
          HANDLE Handle = OpenProcess(
     PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 
     FALSE, 
     te.th32OwnerProcessID /* This is the PID, you can find one from windows task manager */ 
    ); 
          TCHAR Buffer[MAX_PATH]; 
     wprintf(L"Process %u IdThred=%u\n", 
      te.th32OwnerProcessID, te.th32ThreadID); 
    } 
    te.dwSize = sizeof(te); 
    } while (Thread32Next(h, &te)); 
    } 
    CloseHandle(h); 
} 

этот код в нем перечислены все процессы и все нити процесса, но я хочу это перечисляет только нить процесса ПИД- ... пример: explorer.exe PID = 5454 через pid хотел, чтобы у него были идентификаторы нитей и состояния резьбы.Листинг Темы

+0

Я не совсем уверен, что вы просите, но этот [пример] (http://msdn.microsoft.com/en-us/library/windows/desktop/ ms686701% 28v = vs.85% 29.aspx) может помочь. –

ответ

1

Ваш код действительно работает. Просто нужно немного изменить:

HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); 
if (h != INVALID_HANDLE_VALUE) 
{ 
    THREADENTRY32 te; 
    te.dwSize = sizeof(te); 
    if (Thread32First(h, &te)) 
    { 
     do 
     { 
      //in THREADENTRY32 structure there is a member called th32OwnerProcessID 
      //you can check owner process of thread like this: 
      if (te.th32OwnerProcessID == 5454) 
      { 
       wprintf(L"Process %u IdThred=%u\n", te.th32OwnerProcessID, te.th32ThreadID); 
      } 
     } while (Thread32Next(h, &te)); 
    } 
    CloseHandle(h); 
} 
+2

Было бы неплохо, если бы вы могли прокомментировать изменения и не только опубликовать новый код. –

+0

, но процесс, который я хочу получить информацию он и невидимый, и этот код не работает против него. есть ли другой способ? – Wellison

+0

Не могли бы вы рассказать мне подробно, что вам нужно? Я не понял ваш комментарий. сожалею –

Смежные вопросы