実行中のプロセスを列挙          <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