如何在另一个进程中获取有关Qt列表框内容的信息

时间:2010-12-30 07:52:55

标签: c++ qt user-interface accessibility cross-process

我有一个使用Qt编写的应用程序,我想在Qt列表框中读取数据。 它没有响应LB_GETTEXT或其他Windows消息,是否有一种从另一个进程获取数据的好方法?

我无法访问其外部程序Qt进程。我正在寻找一种从C#访问LB内容的方法。

事实证明,Qt的Accessibility插件应该为所需的操作提供支持。但是,我对QT不感兴趣并且我不清楚应用程序是否必须使用允许的可访问性构建,或者它的功能可以为任何应用程序打开和关闭(或至少是默认构建应用程序,可访问性未被明确禁用)。

我已阅读并说它需要运行导出QT_ACCESSIBILITY = 1,放置qt.conf文件并将可访问文件夹放入主根目录中的Qt应用程序。我想我完全不明白如何将QT_ACCESSIBILITY = 1,并且应该足以让应用程序变得可访问。我已经将QT_ACCESSIBILITY = 1添加到我的计算机属性中的环境变量中,如果这样做的话?或者导出QT_ACCESSIBILITY = 1是不同的。

由于

2 个答案:

答案 0 :(得分:2)

您可能希望将进程间通信用于以下目的:http://doc.qt.io/archives/qt-4.7/ipc.html

答案 1 :(得分:2)

你不能轻易做到这一点,因为Qt没有使用标准的Windows控件来实现它的小部件,因此你无法使用标准的Windows Api方法(functions / messages / windows ipc)轻松访问它的内容。你需要以某种方式破解它的内存(不是真的推荐)或使用一些支持Qt的gui(测试)自动化工具,如Squish

LE:您可能还想通过强制加载Qt Accessible Plug-in来检查此hack 进入应用程序,然后尝试使用Visual Studio中包含的Microsoft的Spy ++等常用工具进行检查。请参阅12