1

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

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

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

我已阅读,它说您需要运行 export QT_ACCESSIBILITY=1,放置 qt.conf 文件并将可访问文件夹放入主根目录中的 Qt 应用程序。我想我不完全理解如何打开 QT_ACCESSIBILITY=1 以及它是否足以让应用程序变得可访问。我在我的计算机属性中将 QT_ACCESSIBILITY=1 添加到环境变量中,这样可以解决问题吗?或者 export QT_ACCESSIBILITY=1 是不同的。

谢谢

4

2 回答 2

2

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

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

于 2011-01-21T08:49:47.130 回答
2

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

于 2010-12-30T18:29:29.747 回答