HWND windowHandle = FindWindow(nullptr, "Window Title"); if (windowHandle != nullptr) { RECT rect; if (GetWindowRect(windowHandle, &rect)) { qDebug() << "Window Position: " << rect.left << "," << rect.top; qDebug() << "Window Size: " << rect.right - rect.left << "x" << rect.bottom - rect.top; } }有相同错误如何修改
时间: 2024-04-25 16:25:55 浏览: 11
你可以使用以下两种方法中的任意一种来解决这个问题:
1. 使用L"Window Title"代替"Window Title",这将会将字符串转换成LPCWSTR类型。例如:
HWND windowHandle = FindWindow(nullptr, L"Window Title");
if (windowHandle != nullptr) {
RECT rect;
if (GetWindowRect(windowHandle, &rect)) {
qDebug() << "Window Position: " << rect.left << "," << rect.top;
qDebug() << "Window Size: " << rect.right - rect.left << "x" << rect.bottom - rect.top;
}
}
2. 使用MultiByteToWideChar函数将"Window Title"转换成LPCWSTR类型。例如:
const char* windowTitle = "Window Title";
int length = strlen(windowTitle) + 1;
int size = MultiByteToWideChar(CP_UTF8, 0, windowTitle, length, nullptr, 0);
std::wstring wideWindowTitle(size, 0);
MultiByteToWideChar(CP_UTF8, 0, windowTitle, length, &wideWindowTitle[0], size);
HWND windowHandle = FindWindow(nullptr, wideWindowTitle.c_str());
if (windowHandle != nullptr) {
RECT rect;
if (GetWindowRect(windowHandle, &rect)) {
qDebug() << "Window Position: " << rect.left << "," << rect.top;
qDebug() << "Window Size: " << rect.right - rect.left << "x" << rect.bottom - rect.top;
}
}