実行中のプロセスを列挙 <TOP>
実行中のプロセスリストを取得します。
CreateToolhelp32Snapshot プロセスのスナップショットを取得
Process32First 最初のプロセスに関する情報を取得する関数
Process32Next 2番目以降のプロセスに関する情報を取得する関数
CloseHandle オブジェクトハンドルをクローズする関数
左:Valuestart(WindowsXp) 中:Flora(Windows2000) 右:Flora(Windpws98)
'================================================================ '= 実行中のプロセスリストを取得 '= (CreateToolhelp32Snapshot.bas) '================================================================ #include "Windows.bi" #define TH32CS_SNAPPROCESS &H2 'どの部分をスナップショットに含めたいかを示す定数の宣言 #define MAX_PATH 260 'パス名の最大長を定義 ' プロセスエントリを定義する構造体 Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type ' プロセスのスナップショットを取得 Declare Function Api_CreateToolhelp32Snapshot& Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal dwFlag&, ByVal th32ProcessID&) ' 最初のプロセスに関する情報を取得 Declare Function Api_Process32First& Lib "kernel32" Alias "Process32First" (ByVal hSnapshot&, lppe As PROCESSENTRY32) ' 2番目以降のプロセスに関する情報を取得する関数 Declare Function Api_Process32Next& Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot&, lppe As PROCESSENTRY32) ' オープンされているオブジェクトハンドルをクローズする Declare Function Api_CloseHandle& Lib "kernel32" Alias "CloseHandle" (ByVal hObject&) Var Shared List1 As Object Var Shared Text1 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hSnapShot As Long Var pe As PROCESSENTRY32 Var success As Long Var Ret As Long hSnapShot = Api_CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&) If hSnapShot = -1 Then Exit Sub pe.dwSize = Len(pe) success = Api_Process32First(hSnapShot, pe) List1.ResetContent If success = 1 Then Do List1.AddString "# " & Right$(Str$(1000000000 + Abs(pe.th32ProcessID)), 8) & " - " & pe.szExeFile Loop While Api_Process32Next(hSnapShot, pe) End If Ret = Api_CloseHandle(hSnapShot) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End