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

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

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

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

事实证明,Qt 有一个辅助功能插件,它应该为所需的操作提供支持。然而,我对 QT 很陌生,我不清楚应用程序是否必须在允许可访问性的情况下构建,或者它是一个可以为任何应用程序打开和关闭的功能(或者至少是默认构建应用程序,可访问性没有被明确禁用)。

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

谢谢

最佳答案

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

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

关于c++ - 如何在另一个进程中获取有关Qt列表框内容的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4560959/

相关文章:

android - 如何将命令行参数从 gradlew.bat 传递到 Android/NDK 上的 Clang

qt - QML 中 ItemSelectionModel 的目的和用法

qt - sceneRect 和boundingRect 在哪个坐标上工作?

c++ - 具体QPushButton样式

java - JLabel 未正确绘制

c++ - 模拟串口

C++ 字符串数组切片

c++ - 这可以做到吗?

Java Swing布局问题与代码优化

python - 如何定义当用户在 TextInput 中输入文本并在 Kivy 中按 Enter 时会发生什么?