将TCHAR与String进行比较

Jus*_*tin 3 c++ winapi

在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)

Jes*_*ood 5

最简单的方法可能是不要使用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)