smooth 发表于 2014-4-5 21:45:51

已知某一进程的所有线程号能否查出该进程的PID?

WINDOWS中单进程多线程的程序,现在已知某一进程的所有线程号能否用AU3查出该进程的PID?比如WINDOWS 7中有一个进程的PID是3592,对应的线程号为:
3348
4624
4820
4784
4888
4908
4896
4900
4768
4744
4736
4540
4528
4532
4936
4956
5000
5028
5044
4480
现在能否通过这些线程号,用AU3查询到该进程的PID3592呢?

goldsuper7 发表于 2014-4-5 22:05:07

給您參考
Opt("MustDeclareVars", 1)
Dim $i,$vPID,$temp
Local $list = ProcessList()
For $i = 1 To $list
$temp=$list[$i]
        $vPID=$list[$i]
        MsgBox(0,$temp,$vPID)
Next
我的機器人SKYPE帳號:taiwan-game

user3000 发表于 2014-4-6 09:02:07

本帖最后由 user3000 于 2014-4-6 09:04 编辑

回复 1# smooth

这是获取父子进程的问题。
#Include <WinAPIEx.au3>
_WinAPI_EnumChildProcess ('进程PID' )
_WinAPI_GetParentProcess ( '进程PID' )

smooth 发表于 2014-4-8 21:08:02

回复 3# user3000

我的问题好像还不是父子进程的问题。比如我启动了NC财务软件的中间件JAVA.EXE,然后会它使用ORACLE数据库的用户USER来与NC财务软件连接。我在ORACLE的SQLPLUS中查询到与用户USER发生连接的SPID有20个数字,都不是使用查询父子进程函数查到到PID。

nmgwddj 发表于 2014-4-9 09:10:43

本帖最后由 nmgwddj 于 2014-4-9 09:13 编辑

Thread32First
OpenThread
ZwQueryInformationThread

http://social.msdn.microsoft.com/Forums/zh-CN/77446ef8-e6e2-4681-aef7-bac686cf4507/id?forum=visualcpluszhchs

用C改过一个别人的例子,具体实现方法是用Thread32First枚举系统所有线程,根据线程ID使用OpenThread打开,再用ZwQueryInformationThread获取所属进程PID

smooth 发表于 2014-4-12 10:37:27

回复 5# nmgwddj

好像这个可以达到目的,但是是用C语言完成的,不知道如何转换成AU3。

nmgwddj 发表于 2014-4-14 00:06:12

回复 6# smooth

收点钱,自己写了1个小时,在Thread32First步骤一直返回错误,后来百度了一下找到这里的源码http://www.codeproject.com/threads/pausep.asp。参考 _ProcSuspend 函数



weeks1 发表于 2014-4-16 09:16:18

学习了,学习了,

smooth 发表于 2014-4-16 22:11:06

回复smooth

收点钱,自己写了1个小时,在Thread32First步骤一直返回错误,后来百度了一下找到这里的源 ...
nmgwddj 发表于 2014-4-14 00:06 http://www.autoitx.com/images/common/back.gif

要的就是这样的,非常感谢!慢慢研究。

wangms 发表于 2014-4-21 00:18:04

不知根据线程查出进程有什么实际作用?能否举一两实例,楼主
页: [1]
查看完整版本: 已知某一进程的所有线程号能否查出该进程的PID?