c++ - 使用 Module32First/Next 从 64 位进程枚举 32 位进程模块

标签 c++ winapi

代码如下:

 hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE32, dwPID ); 
  if( hModuleSnap == INVALID_HANDLE_VALUE ) 
  { 

    return( r_mi ); 
  } 


  me32.dwSize = sizeof( MODULEENTRY32 ); 

  if( !Module32First( hModuleSnap, &me32 ) ) 
  { 

    CloseHandle( hModuleSnap );
    return( r_mi ); 
  } 

  do 
  { 
      MessageBoxA(0,me32.szModule,0,0);

  } while( Module32Next( hModuleSnap, &me32 ) );

问题在于,当尝试从 64 位进程枚举 32 位进程的模块时,仅列出 x64 模块。

来自 TH32CS_SNAPMODULE32 的 MSDN: 从 64 位进程调用时,在快照中包含 th32ProcessID 中指定的进程的所有 32 位模块。

但是,它仍然只列出 x64 模块

有人知道解决这个问题的方法吗?

最佳答案

你必须使用TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE 感谢 Hans Passant 解决了这个问题。

关于c++ - 使用 Module32First/Next 从 64 位进程枚举 32 位进程模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103190/

相关文章:

c++ - std::to_string 线程安全吗?

winapi - msdn CM_GET_Parent 示例不起作用

c++ - Win32 API C++ 菜单栏

c++ - c++ 中的线程不会在 mandelbrot 图像处理上产生加速

c++ - 散列重定向的 DOS 输出

c++ - 在分配 scoped_ptr 之前处理异常

c++ - 串口流量控制

c++ - LoadMenu 加载一个看起来非常过时的菜单

c++ - 如何在 native C++ 中获取进程名称和日期时间戳

c - 获取 ListView 中选中项的数量