gpt4 book ai didi

c++ - "PROCESSENTRY32W *"类型的参数与 "LPPROCESSENTRY32"类型的参数不兼容

转载 作者:行者123 更新时间:2023-11-28 01:38:28 25 4
gpt4 key购买 nike

这是我的代码:

std::uint32_t find(const wchar_t* proc)
{
auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
auto pe = PROCESSENTRY32W{ sizeof(PROCESSENTRY32W) };

if (Process32First(snapshot, &pe)) {
do {
if (!_wcsicmp(proc, pe.szExeFile)) {
CloseHandle(snapshot);
return pe.th32ProcessID;
}
} while (Process32Next(snapshot, &pe));
}
CloseHandle(snapshot);
return 0;
}

我得到错误argument of type "PROCESSENTRY32W *"is incompatible with parameter of type "LPPROCESSENTRY32"。我的 Visual Studio 设置设置为使用多字节字符集。如果我将它更改为 unicode,它只会破坏我的整个项目。这个错误是什么意思,我该如何修复我的代码?

最佳答案

您应该使用 PROCESSENTRY32 结构的多字节版本而不是宽字符:

std::uint32_t find(const char* proc)
{
auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
auto pe = PROCESSENTRY32{ sizeof(PROCESSENTRY32) };

if (Process32First(snapshot, &pe)) {
do {
if (!_stricmp(proc, pe.szExeFile)) {
CloseHandle(snapshot);
return pe.th32ProcessID;
}
} while (Process32Next(snapshot, &pe));
}
CloseHandle(snapshot);
return 0;
}

关于c++ - "PROCESSENTRY32W *"类型的参数与 "LPPROCESSENTRY32"类型的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48333577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com