ページ 11

別プロセスのスレッド全列挙

Posted: 2012年8月29日(水) 16:34
by 桜井
notepadのスレッドIDを全列挙させたいのですが、メインスレッド以外のスレッドを取得する方法がわからず1つしか取得できません。
別ソフトウェアを使いnotepadのスレッドを表示させると4つあります。
この4つを取得して出力するやり方を教えていただきたいです。
よろしくおねがいします。


コード:

// サンプル
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

// メイン関数
int main( void )
{
  HWND hWnd;
    DWORD dwProcessId;
    DWORD dwThreadId;
    HANDLE hProcess;

    hWnd = FindWindow("notepad", NULL);  //ウィンドウハンドル取得
    dwThreadId = GetWindowThreadProcessId(hWnd, &dwProcessId); //スレッドIDを取得するついでにプロセスIdも取得。
  //  hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, dwProcessId); //プロセスIDを使ってプロセスハンドルを取得。
	printf("%d",dwThreadId);//メインスレッドID出力
	getchar();
  return 0;
}

Re: 別プロセスのスレッド全列挙

Posted: 2012年8月29日(水) 17:25
by YuO
使ったことが無いのですが,CreateToolhelp32Snapshotでスナップショットをとって,Thread32FirstThread32Nextで列挙できそうです。

ref) Win32 API でアプリケーションを列挙する方法 … スレッドの列挙方法では無いですが,キーワードを調べるのに利用しました。
Traversing the Thread List … スレッドの列挙サンプルっぽい。

Re: 別プロセスのスレッド全列挙

Posted: 2012年8月30日(木) 00:43
by 桜井
YuOさんありがとうございます!無事に解決いたしました