给出GetModuleBaseName的c++示例
时间: 2023-02-12 12:38:59 浏览: 323
```c
#include <Windows.h>
#include <TlHelp32.h>
#include <tchar.h>
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwPID;
_tprintf(_T("输入进程ID: "));
_tscanf(_T("%u"), &dwPID);
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
if (hSnapshot == INVALID_HANDLE_VALUE)
{
_tprintf(_T("CreateToolhelp32Snapshot 调用失败! 错误代码: %u\n"), GetLastError());
return 1;
}
MODULEENTRY32 me = { sizeof(me) };
if (!Module32First(hSnapshot, &me))
{
_tprintf(_T("Module32First 调用失败! 错误代码: %u\n"), GetLastError());
CloseHandle(hSnapshot);
return 1;
}
_tprintf(_T("进程 %u 的模块列表:\n"), dwPID);
do
{
_tprintf(_T("\t%s (0x%08X)\n"), me.szModule, me.modBaseAddr);
} while (Module32Next(hSnapshot, &me));
CloseHandle(hSnapshot);
return 0;
}
```
该示例用于获取指定进程ID的模块列表,并打印出模块名称和基址。主要使用了Windows API中的CreateToolhelp32Snapshot、Module32First、Module32Next和GetModuleBaseName函数。
运行程序输入PID,可以看到进程对应的模块列表。
阅读全文