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时,搜索是不可移植的。我似乎不止一次地回答了这个问题: