gpt4 book ai didi

c - 看看 C 中 WCHAR* 是否是 WCHAR 的子字符串

转载 作者:行者123 更新时间:2023-11-30 14:56:58 30 4
gpt4 key购买 nike

我正在使用Windows功能CreateToolhelp32snapshot枚举我的机器上正在运行的进程。 pe32.szeFileName它返回的字段是 WCHAR ,这是可执行文件的名称。

我想将每个可执行文件名称与我生成的一长串可执行文件进行比较,如下所示:

WCHAR* processNames[numProcesses] = { "word", "excel", "outlook, ...}

不幸的是,我不知道如何检查此 processNames 数组的任何元素是否是 WCHAR 的子字符串pe32.szeFilename 返回.

我知道wcsstr如果我处理两个 const wchar_t * 就可以了字符串。我如何比较 WCHAR返回者 pe32.szeFilename与字符串数组的每个元素?具体来说,我想看看数组中的任何字符串(任何类型的格式都可以)是否是 WCHAR 的子字符串.

编辑:我当前的循环:

do {

wprintf(L"Process name: %s\n", pe32.szExeFile);
for (int i = 0; i < numProcesses; ++i) {
if (wcsstr(pe32.szExeFile, processNames[i])) {
// Found it
wprintf("%s", pe32.szExeFile);

}
}

} while (Process32Next(hProcessSnap, &pe32));

最佳答案

unicode 标记的问题,所以我想,您应该尝试将所有文​​字的声明更改为 L"characters",例如:

WCHAR* processNames[numProcesses] = { L"word", L"excel", L"outlook", ...}

然后检查是否使用了适当的 unicode 函数,例如UNICODE 已定义或使用 W 的函数名称:

Process32FirstW(hProcessSnap, &pe32);
. . .
Process32NextW(hProcessSnap, &pe32);

最后(从那个开始,也许这可以让你看到 if 条件的结果),使用 L"%s" 作为 wprintf :

wprintf(L"%s", pe32.szExeFile);

更新:

只是为了检查 wprintf 的行为,我编写了一小段代码(使用了 Visual Studio 2013),因此结果为

#include <tchar.h>
#include <windows.h>

int main(void)
{
WCHAR* procName = L"excel";

WCHAR* processNames[3] = { L"word", L"excel", L"outlook" };

wprintf(L"Process name: %s\n", procName);
for (int i = 0; i < 3; ++i) {
if (wcsstr(procName, processNames[i])) {
wprintf("%s", procName);
}
}
return 0;
}

Process name: excel

(即看起来像 if 有错误条件),

但代码(仅在循环内为 wprintf 添加了一个 L)

#include <tchar.h>
#include <windows.h>

int main(void)
{
WCHAR* procName = L"excel";

WCHAR* processNames[3] = { L"word", L"excel", L"outlook" };

wprintf(L"Process name: %s\n", procName);
for (int i = 0; i < 3; ++i) {
if (wcsstr(procName, processNames[i])) {
wprintf(L"%s", procName);
}
}
return 0;
}

显示

Process name: excel

excel

关于c - 看看 C 中 WCHAR* 是否是 WCHAR 的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44234435/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com