如果用VB获取某个进程的PID,要简单的!

如果用VB获取某个进程的PID,要简单的!,第1张

新建个模块然后加入以下代码

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

tPEdwSize = Len(tPE)

lNextProcess = Process32First(lSnapShot, tPE)

Do While lNextProcess

If LCase$(sProcess) = LCase$(Left(tPEszExeFile, InStr(1, tPEszExeFile, Chr(0)) - 1)) Then

Dim lProcess As Long

Dim lExitCode As Long

GetPsPid = tPEth32ProcessID

CloseHandle lProcess

End If

lNextProcess = Process32Next(lSnapShot, tPE)

Loop

CloseHandle (lSnapShot)

End If

End Function

调用GetPsPid("进程名")

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

看到pid了。

Private Sub Command1_Click()

Print GetPsPid(Text1Text)

End Sub

经过测试完全可用。。。。。就这样了

这个就算最简单的API函数的 声明了。模块部分都是一样的

ctrl+alt+delete打开任务管理器—》查看-》选择列-》把PID勾上,这样就可以显示进程的PID号了,可以通过PID找到相应的进程。PID是进程运行时系统随机为进程分配的,并不代表专门的进程。

版本 2

子程序 GetProcessPid, 整数型, 公开, 失败返回-1 进程名称取PID

参数 进程名, 文本型

局部变量 hSnapShot, 整数型

局部变量 End, 整数型

局部变量 buffer, PROCESSENTRY32

局部变量 pid, 整数型

pid = -1

hSnapShot = CreateToolhelp32Snapshot (2, 0)

bufferdwSize = 296

End = Process32First2 (hSnapShot, buffer)

判断循环首 (End ≠ 0)

    如果真 (到小写 (到文本 (bufferszExeFile)) = 到小写 (进程名))

        pid = bufferth32ProcessID

        跳出循环 ()

    如果真结束

    End = Process32Next2 (hSnapShot, buffer)

判断循环尾 ()

CloseHandle (hSnapShot)

返回 (pid)

DLL命令 CreateToolhelp32Snapshot, 整数型, "KERNEL32dll", "CreateToolhelp32Snapshot"

    参数 dwFlags, 整数型

    参数 th32ProcessID, 整数型

DLL命令 Process32First2, 整数型, "KERNEL32dll", "Process32First"

    参数 hSnapshot, 整数型

    参数 lppe, PROCESSENTRY32

DLL命令 Process32Next2, 整数型, "KERNEL32dll", "Process32Next"

    参数 hSnapshot, 整数型

    参数 lppe, PROCESSENTRY32

DLL命令 CloseHandle, 整数型, "KERNEL32dll", "CloseHandle"

    参数 hObject, 整数型

数据类型 PROCESSENTRY32

    成员 dwSize, 整数型

    成员 cntUsage, 整数型

    成员 th32ProcessID, 整数型

    成员 th32DefaultHeapID, 整数型

    成员 th32ModuleID, 整数型

    成员 cntThreads, 整数型

    成员 th32ParentProcessID, 整数型

    成员 pcPriClassBase, 整数型

    成员 dwFlags, 整数型

    成员 szExeFile, 字节型, , "256", 如果写成文本型,此处将会被放置一个指针,很显然会出错

以上就是关于如果用VB获取某个进程的PID,要简单的!全部的内容,包括:如果用VB获取某个进程的PID,要简单的!、怎么查看进程的pid值、易语言取进程pid等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9400900.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存