【问题标题】:Somehow possible to get a HMODULE from a HANDLE?不知何故有可能从 HANDLE 获得 HMODULE?
【发布时间】:2018-05-24 07:21:47
【问题描述】:

如何从 Visual c++ 中的打开进程句柄中获取 HMODULE? 例如:如果我有另一个进程的句柄(使用 OpenProcess 创建)并且我想获取该句柄的 HMODULE?

这只是一个简单的演员表吗?

(HMODULE)myHandle;

【问题讨论】:

  • 对我来说听起来像是XY Problem。你真正想要完成什么?

标签: c++ winapi


【解决方案1】:

您不能只是强制转换,而是可以将其传递给EnumProcessModules 以检索与给定进程关联的模块列表。返回的第一个模块是进程的主模块,因此您可以(可能)传递一个缓冲区,该缓冲区只能容纳一个 HMODULE

【讨论】:

  • 当然,在 32 位源进程(执行查询)和 64 位目标的情况下,这将不起作用(或给出错误结果)。但在另一种情况下 - 好的
  • @RbMm 有一个替代EnumProcessModulesEx 用于选择性地检索 32 和/或 64 位模块,而不管调用进程的位数。
  • 不,这只是 64 位进程的替代方案。 32位进程无法通过这种方式获取HMODULE。只是因为它在 32bit 进程中是 32bit 值,当它为 64bit 时它的 64bit 值。只是会被转译
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多