Process32Next 次のプロセスの情報を取得

Cの宣言:

BOOL Process32Next(HANDLE hSnapshot, LPPROCESSENTRY ProcessEntry)

VBの宣言:

Declare Function Process32Next Lib "kernel32" (
	yVal hSnap As Long, 
	ByRef ProcessEntry As PROCESSENTRY32) As Long

説明:

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

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

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

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

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

サンプルコード(VB):

'主な宣言
Public Const SIZEOF_PROCESSENTRY32 As Long = 296

Public Type PROCESSENTRY32
	Size As Long
	RefCount As Long
	ProcessID As Long
	HeapID As Long
	ModuleID As Long
	ThreadCount As Long
	ParentProcessID As Long
	BasePriority As Long
	Flags As Long
	FileName As String * 260
End Type

' プロセスの一覧をテキストボックスに表示
Private Sub DispProcessList()

	Dim hSnap As Long
	Dim pe As PROCESSENTRY32
	Dim bResult As Long
	Dim Msg As String

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

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

	' プロセスの最初の情報を取得
	pe.Size = SIZEOF_PROCESSENTRY32
	bResult = Process32First(hSnap, pe)

	Do While bResult ' 全てのプロセスの情報を表示するループ

		'メッセージの作成
		Msg = ""
		Msg = Msg & "ファイル名: " & Left(pe.FileName, InStr(pe.FileName, vbNullChar) - 1) & vbCrLf
		Msg = Msg & "参照カウント: " & pe.RefCount & vbCrLf
		Msg = Msg & "プロセスID: " & Hex(pe.ProcessID) & vbCrLf
		Msg = Msg & "デフォルトのヒープID: " & Hex(pe.HeapID) & vbCrLf
		Msg = Msg & "モジュールID: " & Hex(pe.ModuleID) & vbCrLf
		Msg = Msg & "スレッド数: " & pe.ThreadCount & vbCrLf
		Msg = Msg & "親プロセスのID: " & Hex(pe.ParentProcessID) & vbCrLf
		Msg = Msg & "基本優先順位レベル: " & pe.BasePriority & vbCrLf

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

		' 次のプロセスの情報を取得
		bResult = Process32Next(hSnap, pe)
	Loop

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

End Sub

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

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