"const wchar_t" 类型的 C++ 参数 * 与 "wchar_t" 类型的参数不兼容
C++ Argument of type "const wchar_t" * incompatible with parameter of type "wchar_t"
不能调用“GetProcessByExeName”
DWORD GetProcessByExeName(wchar_t* ExeName)
{
PROCESSENTRY32W pe32;
pe32.dwSize = sizeof(PROCESSENTRY32W);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
MessageBoxW(NULL, L"Error CreateToolhelp32Snapshot", L"error", MB_OK);
return false;
}
if (Process32FirstW(hProcessSnap, &pe32))
{
do
{
if (_wcsicmp(pe32.szExeFile, ExeName) == 0)
{
CloseHandle(hProcessSnap);
return pe32.th32ProcessID;
}
} while (Process32NextW(hProcessSnap, &pe32));
}
CloseHandle(hProcessSnap);
return 0;
}
通过调用 GetProcessByExeName(L"chrome.exe");
写入 -> “const wchar_t”类型的参数 * 与“wchar_t”类型的参数不兼容
您正试图将一个不可修改且应该是 const wchar_t*
的宽字符串文字传递给声明为采用 wchar_t*
而非 const 的函数。由于您不想修改函数中的字符串,因此您应该将函数的签名从
更改为
DWORD GetProcessByExeName(wchar_t* ExeName)
到
DWORD GetProcessByExeName(const wchar_t* ExeName)
这个问题应该添加一些关于为什么字符串文字必须是常量的信息:Why are string literals const?
不能调用“GetProcessByExeName”
DWORD GetProcessByExeName(wchar_t* ExeName)
{
PROCESSENTRY32W pe32;
pe32.dwSize = sizeof(PROCESSENTRY32W);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
MessageBoxW(NULL, L"Error CreateToolhelp32Snapshot", L"error", MB_OK);
return false;
}
if (Process32FirstW(hProcessSnap, &pe32))
{
do
{
if (_wcsicmp(pe32.szExeFile, ExeName) == 0)
{
CloseHandle(hProcessSnap);
return pe32.th32ProcessID;
}
} while (Process32NextW(hProcessSnap, &pe32));
}
CloseHandle(hProcessSnap);
return 0;
}
通过调用 GetProcessByExeName(L"chrome.exe");
写入 -> “const wchar_t”类型的参数 * 与“wchar_t”类型的参数不兼容
您正试图将一个不可修改且应该是 const wchar_t*
的宽字符串文字传递给声明为采用 wchar_t*
而非 const 的函数。由于您不想修改函数中的字符串,因此您应该将函数的签名从
DWORD GetProcessByExeName(wchar_t* ExeName)
到
DWORD GetProcessByExeName(const wchar_t* ExeName)
这个问题应该添加一些关于为什么字符串文字必须是常量的信息:Why are string literals const?