在C++方面,我仍然是一个极端的菜鸟.我目前讨厌的事情之一(截至目前)是winAPI中的1,000,000,000种不同类型的变量.我用来检查窗口是否存在的这个小程序非常快.但最难的部分是什么?简单地将"字符串"比较在一起,看它是否匹配.最简单的部分是最难的!
不管怎么说,我的问题:我怎么能比一个要找到相当,看它们是否匹配?
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam){
TCHAR a[260];
string toFind = "Google Chrome";
hwnd = GetParent(hwnd);
GetWindowText(hwnd, a, sizeof(a));
if(strcmp(a,toFind) == 0){ //doesn't work
cout << "found the window";
}
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法可能是不要使用c风格的数组开头,因为你正在编译UNICODE
使用std::wstring
:
std::wstring a;
a.resize(260);
std::wstring toFind = L"Google Chrome";
hwnd = GetParent(hwnd);
int size = GetWindowText(hwnd, &a[0], a.size());
a.resize(size);
Run Code Online (Sandbox Code Playgroud)
然后它很简单:
if(a == toFind)
{
}
Run Code Online (Sandbox Code Playgroud)