プロセスの一覧を表示(VB)

キーワード:

CreateToolhelp32Snapshot, Process32First, Process32Next, CloseHandle

サンプルコード:

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

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