C++挂钩到不同的应用程序,如何从进程ID中查找线程ID?

2023-11-25

我想向应用程序添加一个钩子。我在用SetWindowsHookEx我可以创建一个系统范围的挂钩,但我想为特定应用程序创建一个挂钩。我需要目标应用程序的线程 ID 才能挂钩它。我知道窗口的标题,我知道 exe 名称,从这些我可以获取窗口句柄和进程 id,但如何获取线程 id?我看到一篇关于如何做到这一点的帖子c#,但我不知道如何在 C++ 中获取线程列表。

HWND windowHandle = FindWindow(NULL, _T("SomeOtherApp"));
DWORD processId = GetWindowThreadProcessId(windowHandle, NULL);
DWORD threadId = ??? // How do I get thread id here?
HHOOK hook = ::SetWindowsHookEx( WH_CBT, HookCBTProc, hInst, threadId);

谢谢, 亚历山大.


GetWindowThreadProcessId()返回线程 ID。您错误地将线程 ID 分配给进程 ID 变量。而是写:

HWND windowHandle = FindWindow(NULL, _T("SomeOtherApp"));
DWORD threadId = GetWindowThreadProcessId(windowHandle, NULL);
HHOOK hook = ::SetWindowsHookEx(WH_CBT, HookCBTProc, hInst, threadId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++挂钩到不同的应用程序,如何从进程ID中查找线程ID? 的相关文章

随机推荐

  • Android:具有多个可点击按钮的 ListView 元素

    I ve a ListView其中列表中的每个元素都包含一个 TextView 和两个不同的 Button 像这样的东西 ListView Text Button 1 Button 2 Text Button 1 Button 2 and
  • 变量参数函数歧义

    public static void main String args System out println fun 2 3 4 static int fun int a int b int c return 1 static int fu
  • 使用 XML 架构将 XML 转换为 JSON

    我想将 XML 转换为 JSON 具体来说 OAI PMH回复 我目前正在使用node jsxml2js 但问题是 JSON 非常冗长 具有多层嵌套和数组 即使只有一个元素作为子元素 并且永远不会超过一个 问题是xml2js对 XML 文件
  • 需要以编程方式打开蓝牙并发现 Android 中的设备

    我需要通过我的代码打开蓝牙 而不要求用户启用它 然后发现范围内的所有设备并返回这些设备 然后关闭蓝牙连接 怎么做 我想这正是您所需要的 https developer android com guide topics connectivit
  • 如何使用 jQuery 删除 cookie?

    我想用jQuery删除cookie 我已经尝试过这个 cookie name expires 1 但是当我刷新页面时 cookie仍然存在 alert name cookie name Why 要使用 JQuery 删除 cookie 请将
  • Android 浏览器能够执行 xsl 转换吗?

    我有一个 xml 文件 我希望使用 xsl 文档进行转换 但我似乎无法使其在最新的可用 Android 版本上工作 我尝试添加一个
  • 无法使用 C# HttpClient 获取任何 cookie

    我正在尝试使用 C 和 HttpClient 类在 Spotify 登录页面上获取 cookie 然而 当我知道正在设置 cookie 时 CookieContainer 始终为空 我没有发送任何标头 但它仍然应该给我 cookie 因为当
  • 如何将对象传递给 Scala 中的方法

    如何将对象的引用传递给 Scala 中的方法 例如 我想要这个编译 object Constants val constantA Double def calc numbers Seq Double Constants does not c
  • 屏蔽 QLineEdit 文本

    我在用PyQt4 QLineEdit小部件接受密码 有一个setMasking属性 但不遵循如何设置掩码字符 editor QLineEdit editor setEchoMode QLineEdit Password
  • 如何在 iOS 中更改 cordova-camera-plugin 语言?

    我想改变cordova camera plugin语言 显然 它取决于多种因素 我的开发环境是 Visual Studio 2015 中的 Tools for Cordova 这不太重要 但我在我的应用程序中使用 Ionic 框架 我们在运
  • 粗体标题边框

    我尝试做 UIManager getDefaults put TitledBorder font Font BOLD contentPanel setBorder new TitledBorder Client Downloader 但这并
  • 在另一个 div 上使用滚轮时滚动一个 div [重复]

    这个问题在这里已经有答案了 假设我有 2 个并排的 div 两者都是 400px x 400px 并且溢出设置为自动 里面的内容高度超过400px所以有垂直滚动条 当鼠标悬停在左侧的 div 上并且用户使用鼠标滚轮滚动时 我希望另一个 di
  • 如何在shell中获取SVN头版本号?

    我在命令行中使用 svn 如何在命令行中获取头版本号 我需要这个号码 不仅仅是为了查看信息 我想用这个数字来自动构建我的项目 正如下面的评论提到的 这可以通过在较新的 SVN 客户端中使用以下命令来实现 svn info rHEAD sho
  • UIButton 在 iOS7 中点击时不显示突出显示

    我看过大量有关类似事物的帖子 但没有一个完全匹配或解决这个问题 从 iOS 7 开始 每当我添加UIButton to a UITableViewCell或者甚至对于页脚视图来说 它工作得 很好 这意味着它接收到目标操作 但它不会显示当您点
  • 如何在 Perl 中对 HTTP GET 查询字符串进行编码?

    这个问题有点相关在 Perl 中发出 HTTP GET 请求的最简单方法是什么 在通过以下方式提出请求之前LWP Simple我有一个需要序列化 转义的查询字符串组件的哈希值 对查询字符串进行编码的最佳方法是什么 它应该考虑空格以及有效 U
  • 在 GCC 中指定代码的节名称

    我知道 GCC 让你使用 attribute section mysection 函数定义指定将代码放入哪个部分 我有一堆代码需要放入特定部分 并且必须用它来装饰每个函数是相当乏味的 有没有办法在命令行上全局指定代码放置在哪个部分的同时编译
  • 如何指定AddIn进程名称?

    我正在使用 Microsoft AddIn Framework 加载 AddIn 程序集 我在自己的进程中运行它们 以便将它们与服务分开 我不喜欢每个 AddIn 进程在任务管理器中显示为 AddInProcess32 exe 使用进程隔离
  • git - 如何从我当前的提交中删除太大的文件[重复]

    这个问题在这里已经有答案了 当我执行以下操作时 git add git commit m msg git push origin develop 我收到以下错误 Counting objects 25 done Delta compress
  • 在node/express + ejs中将对象传递给客户端?

    我有一个相当大的对象 需要将其传递给客户端脚本中的函数 我尝试过使用 JSON stringify 但这种方法遇到了一些问题 主要与性能相关 在ejs中可以做这样的事情吗 app get load function req res var
  • C++挂钩到不同的应用程序,如何从进程ID中查找线程ID?

    我想向应用程序添加一个钩子 我在用SetWindowsHookEx我可以创建一个系统范围的挂钩 但我想为特定应用程序创建一个挂钩 我需要目标应用程序的线程 ID 才能挂钩它 我知道窗口的标题 我知道 exe 名称 从这些我可以获取窗口句柄和