c++ 搜索名称包含某个字符串的windows窗口 的代码
时间: 2023-12-06 19:45:39 浏览: 78
以下是使用 C++ 搜索名称包含某个字符串的 Windows 窗口的代码:
```cpp
#include <iostream>
#include <Windows.h>
#include <vector>
using namespace std;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
vector<wchar_t>* str = reinterpret_cast<vector<wchar_t>*>(lParam);
wchar_t title[256];
GetWindowText(hwnd, title, sizeof(title));
if (wcsstr(title, &(*str)[0])) {
wcout << title << endl;
}
return TRUE;
}
int main() {
vector<wchar_t> str{ L"search_string" };
EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&str));
return 0;
}
```
在这个代码中,我们使用 `EnumWindows` 函数来枚举所有顶层窗口。对于每个窗口,我们获取其标题,然后在标题中搜索指定字符串。如果找到,则将窗口标题打印到控制台中。
请注意,我们使用 `vector` 存储搜索字符串,并将其作为 `LPARAM` 参数传递给 `EnumWindowsProc` 回调函数。这是因为 `EnumWindowsProc` 函数只能接受一个 `LPARAM` 参数,但是我们需要传递两个参数:窗口句柄和搜索字符串。因此,我们将搜索字符串存储在 `vector` 中,然后将其地址通过 `reinterpret_cast` 转换为 `LPARAM` 类型,传递给 `EnumWindowsProc` 函数。在回调函数中,我们再次使用 `reinterpret_cast` 将 `LPARAM` 参数转换回 `vector` 类型,并获取搜索字符串的地址。
另外,请注意,我们使用了 `wchar_t` 类型来处理 Unicode 字符串。这是因为 Windows 使用 Unicode 字符编码。在 `wcout` 中使用 `<<` 运算符打印 Unicode 字符串。
阅读全文