1

我用 C 编写了一个代码,它将使用 Process32First() API 来获取有关该进程的信息。所有信息都存储在此处定义的 PROCESSENTRY32 结构中:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839%28v=vs.85%29.aspx

pe32 是 PROCESSENTRY32 结构的名称。进程名称将是:pe32.szExeFile

我可以这样打印:

_tprintf(TEXT("Process name: %s\n"),pe32.szExeFile);

现在,我想将进程名称与 explorer.exe 等特定进程进行比较

这就是我正在做的事情:

if(!wcscmp(pe32.szExeFile, _T("explorer.exe"))
{
 perform some action here;
}

这没用。

在 MS Visual Studio 2008 中,PROCESSENTRY32 结构的 szExeFile 成员的数据类型为:WCHAR tagPROCESSENTRY32::szExeFile[260]

所以,我认为它是一个宽字符串?

explorer.exe 是一个普通的字符串(const char *),指向一个字符数组的指针。

如何将 szExeFile 与普通字符串进行比较?

我发现这些数据类型很混乱,我希望通过这个例子更好地理解它们。

谢谢。

4

1 回答 1

6

更改您的 if 以使用宽字符串"explorer.exe"作为 as

if(!wcscmp(pe32.szExeFile, L"explorer.exe")

即用于L"explorer.exe"与宽字符串进行比较。

您还可以通过Project->Settings->Configuration Properties->General在您的 VC 项目中设置使用 UNICODE 字符集。

于 2013-04-02T04:13:07.730 回答