MOUDLE:
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Type PROCESS_BASIC_INFORMATION
ExitStatus As Long
PebBaseAddress As Long
AffinityMask As Long
BasePriority As Long
UniqueProcessId As Long
InheritedFromUniqueProcessId As Long
End Type
Private Declare Function NtQueryInformationProcess _
Lib "ntdll" (ByVal ProcessHandle As Long, _
ByVal ProcessInformationClass As Long, _
ByRef ProcessInformation As PROCESS_BASIC_INFORMATION, _
ByVal lProcessInformationLength As Long, _
ByRef lReturnLength As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public ProcessHandle As Long
Public Function GetProcessID(ByVal ProcessHandle As Long) As Long
On Error GoTo e
Dim info As PROCESS_BASIC_INFORMATION
If NtQueryInformationProcess(ProcessHandle, 0, info, Len(info), ByVal 0) = 0 Then
GetProcessID = info.PebBaseAddress
Else
GetProcessID = 1
End If
e: End Function
FORM:
Private Sub Command1_Click()
Dim winhwnd As Long
Dim ProcessID As Long
Dim a As Long
winhwnd = FindWindow(vbNullString, "我的电脑")
Call GetWindowThreadProcessId(winhwnd, ProcessID)
Print winhwnd
Print ProcessID
a = GetProcessID(Val(ProcessID))
Print a
End Sub
为什么NtQueryInformationProcess 还执行错误呢??????
在问一下,有没有关于ZW*和NT*开头的API函数帮助呢???
谢谢!!!!!!!!!!!!!
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Type PROCESS_BASIC_INFORMATION
ExitStatus As Long
PebBaseAddress As Long
AffinityMask As Long
BasePriority As Long
UniqueProcessId As Long
InheritedFromUniqueProcessId As Long
End Type
Private Declare Function NtQueryInformationProcess _
Lib "ntdll" (ByVal ProcessHandle As Long, _
ByVal ProcessInformationClass As Long, _
ByRef ProcessInformation As PROCESS_BASIC_INFORMATION, _
ByVal lProcessInformationLength As Long, _
ByRef lReturnLength As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public ProcessHandle As Long
Public Function GetProcessID(ByVal ProcessHandle As Long) As Long
On Error GoTo e
Dim info As PROCESS_BASIC_INFORMATION
If NtQueryInformationProcess(ProcessHandle, 0, info, Len(info), ByVal 0) = 0 Then
GetProcessID = info.PebBaseAddress
Else
GetProcessID = 1
End If
e: End Function
FORM:
Private Sub Command1_Click()
Dim winhwnd As Long
Dim ProcessID As Long
Dim a As Long
winhwnd = FindWindow(vbNullString, "我的电脑")
Call GetWindowThreadProcessId(winhwnd, ProcessID)
Print winhwnd
Print ProcessID
a = GetProcessID(Val(ProcessID))
Print a
End Sub
为什么NtQueryInformationProcess 还执行错误呢??????
在问一下,有没有关于ZW*和NT*开头的API函数帮助呢???
谢谢!!!!!!!!!!!!!
解决方案 »
- 数字和字母排序~请帮忙看看
- 急需求助! VB6.0如何注册控件
- 请教各位前辈们:关于数据处理的问题
- 急!100分,CSV导入SQL,前面0不见了
- VB 用WINSOCK 如何获取多网卡的IP
- 不时接到询问 Grid++Report 使用许可的问题:在中国大陆地区是免费构件,在此作简要说明
- 救命啊~~~~~
- 各位高手救命啊!搞了一天了,搞不懂为什么,你说这个。。。。。
- 兄弟们帮忙推荐几个较好的电子论坛,谢谢!
- 急,在线等!我用以下代码取出一个库中所有表的名子,可是却多出来许多奇怪的东西???
- 哪位朋友抽出3分钟时间帮我用VB6.0编一个小小的程序。
- 为什么我的MODEM拨号程序,能听到对方的声音,对方却听不到自己的声音?(代码如下)
NtQueryInformationProcess貌似是不可以在RING3下执行的吧?