スレッドの一覧を表示(VB)

キーワード:

CreateToolhelp32Snapshot, Thread32First, Thread32Next, CloseHandle

サンプルコード:

'主な宣言
Public Const SIZEOF_THREADENTRY32 As Long = 28

Public Type THREADENTRY32
	Size As Long
	RefCount As Long
	ThreadID As Long
	ProcessID As Long
	BasePriority As Long
	CurrentPriority As Long
	Flags As Long
End Type

' スレッドの一覧をテキストボックスに表示
Private Sub DispThreadList()

	Dim hSnap As Long
	Dim te As THREADENTRY32
	Dim bResult As Long
	Dim Msg As String

	'テキストボックスをクリア
	txtMsg.Text = ""

	' スナップショットを作成
	hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0)

	' プロセスの最初の情報を取得
	te.Size = SIZEOF_THREADENTRY32
	bResult = Thread32First(hSnap, te)

	Do While bResult ' 全てのスレッドの情報を表示するループ

		'メッセージの作成
		Msg = ""
		Msg = Msg & "参照カウント: " & te.RefCount & vbCrLf
		Msg = Msg & "スレッドID: " & Hex(te.ThreadID) & vbCrLf
		Msg = Msg & "プロセスID: " & Hex(te.ProcessID) & vbCrLf
		Msg = Msg & "基本優先順位レベル: " & te.BasePriority & vbCrLf
		Msg = Msg & "現在の優先順位レベル(差分値): " & te.CurrentPriority & vbCrLf

		' メッセージの表示
		txtMsg.Text = txtMsg.Text & Msg & vbCrLf

		' 次のスレッドの情報を取得
		bResult = Thread32Next(hSnap, te)
	Loop

	' スナップショットの破棄
	CloseHandle hSnap

End Sub
(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。