首页
社区
课程
招聘
[求助]怎么从进程ID 得到主线程 ID
发表于: 2008-8-28 19:40 8340

[求助]怎么从进程ID 得到主线程 ID

2008-8-28 19:40
8340


我主要是对多个游戏.. SetWindowsHookEx 安装钩子!

由于是多个游戏...所以用Findwindow然后再 GetWindowThreadProcessId 不行

所以采用.CreateToolhelp32Snapshot 进行遍历

而 CreateToolhelp32Snapshot 只有   进程ID

怎么样..由进程 ID 得到其主线程 ID 呢?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
为什么都是游戏?
2008-8-28 20:18
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
研究外挂..不错啊..
2008-8-28 20:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Function GetTidByPid(dwProcessId : Integer) : String
Var hSnap : Thandle;
    Thread32 : THREADENTRY32;
    LoopFlag : Boolean ;
begin
hSnap := CreateToolHelp32SnapShot(TH32CS_SNAPTHREAD        ,0);
Thread32.dwSize := Sizeof(Thread32);

if hSnap = INVALID_HANDLE_VALUE then
Begin
Result := 'NotFound' ;
Exit;
End;
//判断一下

LoopFlag := Thread32First(hSnap,Thread32);
if LoopFlag = False then
Begin
Result := 'NotFound';
Exit;
End;
//判断一下

While LoopFlag do
begin
  If dwProcessID = Thread32.th32OwnerProcessID then
   Begin
   Result := Inttostr(Thread32.th32ThreadID) ;
   Exit;                                          //根据楼主的意思,得到该进程的第一条线程就直行了
   End;
LoopFlag := Thread32Next(hSnap,Thread32);
end;
CloseHandle(hSnap);

End;

只要得到主线程Id 的话上面的就足够了```

返回 String 类型的 ThreadId
2008-8-28 21:41
0
游客
登录 | 注册 方可回帖
返回
//