首页
社区
课程
招聘
[求助]X64中使用GetThreadContext 错误998
发表于: 2020-2-4 16:25 3170

[求助]X64中使用GetThreadContext 错误998

2020-2-4 16:25
3170
64位程序中 使用 GetThreadContext 错误998 目标程序也是 64位

var
  hSnapshot: HWND;
  te: THREADENTRY32;
  fOk: Boolean;
  hThread: THandle;
  ctx:   _CONTEXT;
begin
  Result := True;
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, dwProcessID);
  if (hSnapshot <> INVALID_HANDLE_VALUE) then
  begin
    te.dwSize := SizeOf(THREADENTRY32);

    fOk := Thread32First(hSnapshot, te);
    while fOk do
    begin
      fOk := Thread32Next(hSnapshot, te);
      if (te.th32OwnerProcessID = dwProcessID) then
      begin
       hThread := OpenThread(THREAD_ALL_ACCESS, FALSE, te.th32ThreadID);
 
        if (hThread <> 0) then
        begin
         SuspendThread(hThread);
          FillChar(ctx, SizeOf(_CONTEXT), #0);
          ctx.ContextFlags :=  CONTEXT_FULL; //CONTEXT_ALL// 这里要设置线程标志为
 
          GetThreadContext (hThread, ctx);

         Form1.Caption:=IntToStr(getlasterror);
 
        end;
        CloseHandle(hThread);
      end;
    end;
    CloseHandle(hSnapshot);
  end;
end;

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
帮顶
2020-2-4 18:42
3
雪    币: 158
活跃值: (349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
会delphi的大佬帮我看看哪里有问题呢
2020-2-5 20:12
0
雪    币: 158
活跃值: (349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题解决了, hThread  不能定义为局部变量,要定义为全局变量,咋这么奇葩
最后于 2020-2-6 12:21 被lg好人编辑 ,原因:
2020-2-6 12:12
0
游客
登录 | 注册 方可回帖
返回
//