VB获得进程PID

新建模块,加入以下代码:

Option Explicit

Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)

Private Const TH32CS_SNAPPROCESS = &H2&

Private 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 * 260

End Type

Const PROCESS_TERMINATE = 1

Function GetPsPid(sProcess As String) As Long

Dim lSnapShot As Long

Dim lNextProcess As Long

Dim tPE As PROCESSENTRY32

lSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)

If lSnapShot <> -1 Then

tPE.dwSize = Len(tPE)

lNextProcess = Process32First(lSnapShot, tPE)

Do While lNextProcess

If LCase$(sProcess) = LCase$(Left(tPE.szExeFile, InStr(1, tPE.szExeFile, Chr(0)) - 1)) Then

Dim lProcess As Long

Dim lExitCode As Long

GetPsPid = tPE.th32ProcessID

CloseHandle lProcess

End If

lNextProcess = Process32Next(lSnapShot, tPE)

Loop

CloseHandle (lSnapShot)

End If

End Function

调用GetPsPid("进程名")

在form1窗体是加入按钮控件和编辑框控件然后计入代码运行输入进程名然后就可以看到pid了。

Private Sub Command1_Click()

Print GetPsPid(Text1.Text)

End Sub

就这样了……