如何检查特定窗口是否打开。我只得到窗口名称的一部分。我想在QT控制台应用程序中使用EnumWindows(),但我得到一些错误,声明“main.obj:-1:错误:未解析的外部符号 imp__GetWindowTextW @ 12在函数中引用”int __stdcall EnumWindowsProc(struct HWND *,long)“(?EnumWindowsProc @@ YGHPAUHWND __ @@ J @ Z)”
以下是我的示例代码
BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) {
char buff[255];
if (IsWindowVisible(hWnd)) {
GetWindowText(hWnd, (LPWSTR) buff, 254);
}
return TRUE;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
EnumWindows(EnumWindowsProc, 0);
return 0;
}
答案 0 :(得分:2)
这是链接器错误而不是编译错误。
您已正确包含windows.h
,但您还需要将导入库添加到链接器选项中。示例代码中的所有三个Win32函数都要求您链接user32.lib
。
答案 1 :(得分:0)
EnumWindowsProc不是来自Qt,它是一个Windows API函数,你需要包含windows.h
我没有使用Qt,代码可以通过complie,但输出似乎不对。无论如何,这是我的代码
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;
char buff[255];
BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam)
{
if (IsWindowVisible(hWnd))
{
GetWindowText(hWnd, (LPWSTR) buff, 254);
}
return TRUE;
}
int main()
{
EnumWindows(EnumWindowsProc, 0);
for(int i = 0; i != 254; ++i)
cout << buff[i];
getch();
return 0;
}
答案 2 :(得分:0)
您可以使用:
Application.OpenForms["FormName"]
检查表格是否打开。