DWORD ProcMem::Module(LPSTR ModuleName){
HANDLE hModule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(mEntry);
do
if (!strcmp(mEntry.szModule, ModuleName))
{
CloseHandle(hModule);
return (DWORD)mEntry.modBaseAddr;
}
while (Module32Next(hModule, &mEntry));
cout << "\nMODULE: Process Platform Invalid\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
WCHAR* 类型的参数与“const char*”不兼容。将光标放在 mEntry 上。
您的项目是在启用 Unicode 的情况下编译的,因此CreateToolhelp32Snapshot()映射到CreateToolhelp32SnapshotW()、PROCESSENTRY32映射到PROCESSENTRY32W和Process32Next()映射到Process32NextW()。因此,ProcEntry.szExeFilefield 是一个WCHAR[]数组。
您正在传递szExeFile到strcmp(),它不支持wchar_t*字符串,仅支持char*字符串。您需要:
使用WideCharToMultiByte()转换szExeFile为char[]数组,以便您可以将其传递给strcmp().
将参数更改ProcessName为wchar_t*, 或 useMultiByteToWideChar()转换ProcessName为wchar_t[]数组,并将其传递给wcscmp()或lstrcmpW()而不是strcmp()。
如果您想继续使用TCHAR基于 - 的 API,请将ProcessName参数更改为LPTSTR,然后使用_tcscmp()或lstrcmp()代替strcmp()。
| 归档时间: |
|
| 查看次数: |
9281 次 |
| 最近记录: |