0
我有以下問題:進程快照不能對寬字符串進行比較
我想通過使用CreateToolHelp32Snapshot函數和Process32First /下一步跟蹤正在運行的進程。不過,我想默認使用Unicode字符集。
bool active(const std::wstring& process_name)
{
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (snapshot == INVALID_HANDLE_VALUE)
return false;
PROCESSENTRY32 entry;
if (Process32First(snapshot, &entry))
{
if (process_name.compare(entry.szExeFile) == 0)
{
CloseHandle(snapshot);
return true;
}
}
while (Process32Next(snapshot, &entry))
{
if (process_name.compare(entry.szExeFile) == 0)
{
CloseHandle(snapshot);
return true;
}
}
CloseHandle(snapshot);
return false;
}
int main()
{
SetConsoleTitle(L"Lel");
if (active(L"notepad++.exe"))
std::cout << "Hello" << std::endl;
else
std::cout << ":(" << std::endl;
}
但是,如果我使用多字節字符集一切工作正常。
感謝。你能解釋爲什麼只有當我使用Unicode字符集時纔會出現問題嗎? – Cyrex1337
變量必須按照供應商文檔中的說明進行初始化,否則會導致未定義的行爲。錯誤的實現有時可能正常工作,我不知道爲什麼,你可以開始另一個問題。 –