【发布时间】:2019-11-02 17:02:50
【问题描述】:
我正在尝试打印并保存进程的模块名称。
但是在打印 char 数组时,我得到了一些看起来像地址的东西。
#include <windows.h>
#include <TlHelp32.h>
#include <iostream>
int main() {
MODULEENTRY32 me32;
HWND hwnd = FindWindow(0, L"Window Name");
DWORD dwPID;
GetWindowThreadProcessId(hwnd, &dwPID);
HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
me32.dwSize = sizeof(MODULEENTRY32);
Module32First(hModuleSnap, &me32);
std::cout << me32.szModule << std::endl;
do
{
std::cout << me32.szModule << std::endl; // important line
} while (Module32Next(hModuleSnap, &me32));
return 0;
}
在我的例子中,每个模块的输出是00AFF53C。
me32.szModule 将模块的名称保存为 char 数组。
Microsoft 在their example 中使用以下内容来转换和打印模块名称:
_tprintf( TEXT("\n\n MODULE NAME: %s"), me32.szModule );
但我认为你只能用它来打印字符串。
那么如何转换并保存me32中的字符串呢?
【问题讨论】: