Thread32Next 次のスレッドの情報を取得

Cの宣言:

BOOL Thread32Next(HANDLE hSnapshot, LPTHREADENTRY ThreadEntry)

VBの宣言:

Declare Function Thread32Next Lib "kernel32" (
	ByVal hSnapshot As Long, 
	ByRef ThreadEntry As THREADENTRY32) As Long

説明:

hSnapshotで示されるスナップショットに含まれるスレッド一覧の情報の二番目以降のスレッド情報を取得する。

この関数は95またはNT5.0以降で使用可能である。

この関数の実行前にThread32FirstまたはThread32Nextが実行されていた場合、前回取得した情報の次の情報がThreadEntryに返される。

引数の意味は、以下の通り。
hSnapshot (in) 情報取得元のスナップショットを示すハンドル
ThreadEntry (out) 取得結果のスレッドの情報

戻り値は、関数の実行に成功したか否かを表す真偽値である。

サンプルコード(VB):

'主な宣言
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 更新)

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