
GetWindowThreadProcessId,它根据窗口的句柄来获取进程和线程ID,VB原型如下
'Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
'参数:
'hwnd:目标窗口的句柄
'lpdwProcessId:一个接受返回进程ID的Long变量,
'顺便提一下,在我们调用API的时候,如果一个变量不是ByVal传递,则表示这个变量是用来接受返回值的(但也不是绝对的)
'返回值:
'窗口的线程ID
Set objWMIService = GetObject("winmgmts:\\\root\cimv2")
Set ps = objWMIServiceExecQuery("Select from Win32_Process")
Print " PID"; Tab(6); "映像名称"
For Each p In ps
Print Format(pHandle, "@@@@"); Tab(6); pName
Next
你把代码写到哪个事件里了?写在 Form_Load() 下可能不行
如果把代码写在 Form_Load() ,设计时应该把窗体的 AutoRedraw 属性设为 True
如果前三行是以下内容,那就对了
PID 映像名称
0 System Idle Process
4 System
Private Sub Command1_Click()
Dim Wmi As Object, A As Object
Set Wmi = GetObject("Winmgmts:{impersonationLevel=impersonate}!\\\root\cimv2")
Set A = WmiExecquery("Select From Win32_Process")
'Dim b As Object
'For Each b In A
'DebugPrint bProcessID & vbTab & bName, bCommandLine
'Next
End Sub
列出全部进程。不显示不全啊,所以注释掉了,就当没写。
显示进程列表的代码
Set objWMIServer = GetObject("winmgmts:\\\root\cimv2")
Set colProcesses = objWMIServerExecQuery("Select from Win32_process")
For Each Process In colProcesses
Text1 = Text1 & ProcessCaption & vbCrLf
Next
进程不一定都是系统进程
在TEXT里选中的东西只是字符
如果一个进程是系统进程,结束进程将造成计算机运行缓慢或不正常或重启。
如果要让显示的进程以顺序排列,最好不要用Text,用List,Sorted属性为True时有自动排列功能
Private Sub Button1_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Button1Click
Dim MyInfo As String = "系统正在运行的程序" + vbCrLf
Dim MyProcesses() As Process = ProcessGetProcesses()
For Each MyProcess As Process In MyProcesses
If (MyProcessMainWindowTitleLength > 0) Then
MyInfo += MyProcessMainWindowTitle + vbCrLf
End If
Next
MeLabel1Text = MyInfo
End Sub
以上就是关于VB已知窗体句柄怎么获取进程ID全部的内容,包括:VB已知窗体句柄怎么获取进程ID、vb遍历进程问题、用vb怎么提取进程PID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)