C++ _tcsstr的头

C++ _tcsstr的头,c++,visual-studio,C++,Visual Studio,您好,我从互联网上复制了一个小代码,它使用\u tcssr,我想知道该方法的标题是什么,以便我可以使用它 HANDLE GetHandleFromProcessPath(TCHAR* szExeName, DWORD& dwPID) { HANDLE hExeName = INVALID_HANDLE_VALUE; HANDLE hSnap = INVALID_HANDLE_VALUE; PROCESSENTRY32 pe32; pe32.dwSi

您好,我从互联网上复制了一个小代码,它使用
\u tcssr
,我想知道该方法的标题是什么,以便我可以使用它

    HANDLE GetHandleFromProcessPath(TCHAR* szExeName, DWORD& dwPID)
{
    HANDLE hExeName = INVALID_HANDLE_VALUE;
    HANDLE hSnap = INVALID_HANDLE_VALUE;
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);

    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (INVALID_HANDLE_VALUE != hSnap)
    {
        if (Process32First(hSnap, &pe32))
        {
            do
            {
                //!!! Attention pe32.szExeFile always return exe file name. not window title.
                if (NULL != _tcsstr(pe32.szExeFile, szExeName))
                {
                    hExeName = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe32.th32ProcessID);
                    dwPID = pe32.th32ProcessID;
                    break;
                }
            } while (Process32Next(hSnap, &pe32));
        }
    }


    return hExeName;
}
因此: 方法
\u tcssrt(pe32.szExeFile,szExeName)
在哪个标题中?

简短回答:
\include


详细回答:完全停止使用TCHAR
TCHAR
是微软的一项发明,早在基于ANSI的Windows 95/98和基于Unicode的Windows NT(2000/XP)的代码交叉编译很常见的时候。如今,TCHAR是一个相当陈旧的概念。默认情况下,面向Windows的C/C++项目应该只定义UNICODE和_UNICODE。不要使用
strstr
tcstr
,只需使用
wcsstr
。将所有的
TCHAR
LPTSTR
引用替换为
wchar\u t
LPWSTR
,视情况而定。

尽管除非你计划编译应用程序的多字节和unicode版本,否则你应该使用正确的版本,而不是TCHAR乱七八糟的版本。如果你离开
TCHAR
世界就更好了完全选择ANSI或unicode(首选unicode)并使用它。如果你不知道你是否在使用宽字符,你可能会有不愉快的惊喜。所以,你从互联网上复制了随机代码,但现在它不起作用,你想让我们修复它吗?很抱歉但是,也许,你可以做一个随机的互联网搜索,寻找你需要的标题,或者尝试了解你正在做的事情,阅读你正在使用的任何图书馆的文档,停止在互联网上“禁止”随机代码——这不是学习C++的方法。当所有这些代码都特定于win32时,搜索是不可移植的。我似乎不止一次地回答了这个问题: