将ProcessEntry32.szExeFile与用户输入的数据进行比较时,不编译C ++ _wcsicmp代码

时间:2018-05-03 05:06:22

标签: c++ process

所以,我有这段代码:

using namespace std;
void targetProcessFinder(wchar_t targetProcess)
{

PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);

HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

if(Process32First(processSnapshot, &entry) == TRUE)
    {
        while(Process32Next(processSnapshot, &entry) == TRUE)
            {
                if (_wcsicmp(entry.szExeFile, targetProcess) == 0)
                {
                    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
                    int processID = entry.th32ProcessID;

                    CloseHandle(hProcess);
                }
            }
    }
}

int main()
{
    wchar_t targetProcess
    cin >> targetProcess;
    targetProcessFinder(targetProcess);
}

由于某种原因,我在if(_wcsicmp ...)行上收到错误而我完全迷失了原因,我已经尝试更改数据类型以查看是否存在问题但是没有似乎解决了这个问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

void targetProcessFinder(wchar_t targetProcess)

您要传递一个wchar_t,您需要传递一个wchar_t *

_wcsicmp(entry.szExeFile, targetProcess)

如果使用_MBCS编译器标志进行编译,则PROCESS_ENTRY32.szExeFile是常规char数组,而不是wchar_t数组,在这种情况下,您需要将项目的字符集切换为Unicode。