我目前正在尝试制作一个调试工具,该工具将位于专有应用程序之上(通过BLE与硬件连接)。
在这个应用程序内部(用QT编写)有一个文本框,其中包含来自硬件的日志信息流,我想创建一个应用程序来监视该文本框并处理被记录的数据。 / p>
我破解了打开Spy ++并找到了我需要的窗口的句柄,但是,它只显示为" QWidget"并且WM_GETTEXT没有提取任何数据。这两个链接还提到QT小部件无法通过标准的Win32 API读取(这对我来说很奇怪,因为我确信所有需要通过Windows GUI层的内容): https://forum.qt.io/topic/36867/accessing-qtextedit-from-another-program/9 https://forum.qt.io/topic/19256/how-get-handle-of-qwidget-child-with-vb-net/9
我对任何和所有选项都开放!我对这个语言不可知。如何读出QTextEdit记录数据?
答案 0 :(得分:4)
Qt的小工具支持辅助技术(AT)开箱即用。在Windows上,Qt的FlushFinalBlock()可通过Accessibility和MSAA获得。任何一个都能够检查小部件树,并跨进程边界提供小部件的属性。
Qt正式支持这两种界面。
答案 1 :(得分:3)
您无法读取QTextEdit
的内容,因为它是外星人的小部件。您可以在QWidget文档中阅读更多内容:
在Qt 4.4中引入,外来小部件是未知的小部件 窗口系统。它们没有关联的本机窗口句柄 跟他们。此功能显着加快了小部件绘画, 调整大小,并消除闪烁。
如果您需要使用本机窗口的旧行为,则可以 选择以下选项之一:
在您的环境中使用QT_USE_NATIVE_WINDOWS = 1.
在应用程序上设置Qt :: AA_NativeWindows属性。所有 小部件将是本机小部件。
在小部件上设置Qt :: WA_NativeWindow属性:小部件本身 并且它的所有祖先都将成为原生(除非 设置Qt :: WA_DontCreateNativeAncestors。
调用QWidget :: winId强制执行本机窗口(这意味着3)。
- 醇>
设置Qt :: WA_PaintOnScreen属性以强制执行本机窗口 (这意味着3)。
还有一个Qt的内省工具可能对您有用:GammaRay。 Personaly我没有使用它 - 只读了一个小概述,但看起来很有希望。