C++ C++_将ProcessEntry32.szexE文件与用户输入的数据进行比较时,wcsicmp代码未编译
因此,我有以下代码:C++ C++_将ProcessEntry32.szexE文件与用户输入的数据进行比较时,wcsicmp代码未编译,c++,process,C++,Process,因此,我有以下代码: using namespace std; void targetProcessFinder(wchar_t targetProcess) { PROCESSENTRY32 entry; entry.dwSize = sizeof(PROCESSENTRY32); HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if(Process32First(processSn
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…)行上遇到了一个错误,我完全不知道为什么,我已经尝试更改周围的数据类型,看看这是否是问题所在,但似乎没有任何方法可以解决它
有什么建议吗?
void targetProcessFinder(wchar\t targetProcess)
你要通过一个wchar\t,你需要通过一个wchar\t*
\u wcsicmp(entry.szExeFile,targetProcess)
如果您使用_mbcscompiler flag进行编译,那么PROCESS_ENTRY32.szExeFile是一个常规字符数组,而不是wchar_t数组,在这种情况下,您需要将项目的字符集切换到Unicode。
targetProcess
是一个wchar\u t
,它不是指向wchar\u t
序列的指针。所以,是的,编译器抱怨是对的。如果您了解(a)正在调用的函数及其要求,(b)cin>>targetProcess
只保存了一个字符,这将非常有帮助。欢迎使用堆栈溢出!你能详细说明你收到的错误吗?请详细了解这些细节,以便我们能更好地帮助您。