Qt菜鸟,求教 FindWindow用法

colormiao 2012-08-23 11:11:19
我在windows下面做desktop程序,需要获取其他程序的窗口句柄,在使用FindWindow函数的使用,老是无法编译通过。
int MainWindow::getIJPASFreq()
{
HWND hwind = ::FindWindowW(NULL,QString::fromUtf8("IJPAS").toStdWString().c_str());
if(!hwind)
QMessageBox::information(this,tr("Warning"),tr("can't get IJPAS Window Handle!"));
return 0;
}


报错内容为:
mainwindow.obj : error LNK2019: 无法解析的外部符号 __imp__FindWindowW@8,该符号在函数 "private: int __thiscall MainWindow::getIJPASFreq(void)" (?getIJPASFreq@MainWindow@@AAEHXZ) 中被引用
...全文
1059 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yulei123000 2014-07-23
  • 打赏
  • 举报
回复
包含afxwin.h试试
colormiao 2012-08-29
  • 打赏
  • 举报
回复
已经搞定了,好像是我Qt环境装得有问题。
colormiao 2012-08-23
  • 打赏
  • 举报
回复
谢谢polly_polly,我想再问一下,setAccessibleName(strName)是需要在被调用的窗口构造的时候设置吗?
我的情况是:我希望能访问一个第三方的应用程序的界面上的一个edit控件上的文本内容。不知道是否能用此方法。

[Quote=引用 5 楼 的回复:]

窗口构造的时候调用: setAccessibleName(strName)

下面是需要查找的地方:
QWidget* GetWidgetPtrByName(QString strWidget)
{
QWidgetList widgetLst;
QWidget *pWidget = NULL;
QString strName;
widgetLst ……
[/Quote]
polly_polly 2012-08-23
  • 打赏
  • 举报
回复
窗口构造的时候调用: setAccessibleName(strName)

下面是需要查找的地方:
QWidget* GetWidgetPtrByName(QString strWidget)
{
QWidgetList widgetLst;
QWidget *pWidget = NULL;
QString strName;
widgetLst = qApp->allWidgets();
for(int i = 0; i < widgetLst.size(); i++)
{
pWidget = widgetLst.at(i);
strName = pWidget->accessibleName();
if(strName == strWidget)
{
break;
}
}

return pWidget;
}

我这个是在linux下面这样做的,windows下应该也可以的,试试看。。
dinjay 2012-08-23
  • 打赏
  • 举报
回复
直接使用FindWindow
colormiao 2012-08-23
  • 打赏
  • 举报
回复
有没有高人路过,指点一下哦。我实在是查不出原因了。
colormiao 2012-08-23
  • 打赏
  • 举报
回复
检查过,windows.h是包含了的。

[Quote=引用 1 楼 的回复:]

这是Windows SDK的内容。估计是忘了包含头文件windows.h的原因。
[/Quote]
采石工 2012-08-23
  • 打赏
  • 举报
回复
这是Windows SDK的内容。估计是忘了包含头文件windows.h的原因。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧