gpt4 book ai didi

c++ - 使用win32 api在qwidget中填充文本

转载 作者:太空宇宙 更新时间:2023-11-04 13:56:34 25 4
gpt4 key购买 nike

我有一个问题。我正在使用 C++ 在 Win32 中开发一个应用程序,该应用程序在其他范围内自动执行外部应用程序中的某些用户输入过程,以便用户准备好操作。特别是我想使用 Win32 API 在 Qt QWidget 控件中填充一些文本。我用纯 C 编写了一个 DLL 来完成这个任务。我在 MFC 应用程序上对其进行了测试,它运行良好。无论如何,我无法让它为 Qt QWidget 控件工作。我能够通过 EnumChildWindows 函数(存储在结构字段中)获得正确的句柄。

SendMessage(Field.hFound,WM_SETTEXT,(WPARAM)NULL,(LPARAM)_T("bla bla bla"));

但 SendMessage 似乎不起作用,因为控件(很可能是 QLineedit)可能支持其他消息来完成这项工作。这些事件是否有任何规范,我在谷歌上搜索了很多但找不到合适的。使此代码正常工作的最直接方法是什么?我可以使用 Qt 的事件表映射吗?我是否必须使用一些 Qt header 并将其链接到 DLL(这可能是一个问题,因为许可)?

提前致谢。

最佳答案

Qt,至少4.8和5.x,使用了外来控件。窗口之外的任何小部件都没有 native 句柄。您的 EnumChildWindows 很可能没有找到您认为它正在找到的东西。

如果您无法访问 Qt 应用程序的源代码,除了将您自己的代码注入(inject)正在运行的应用程序之外,您别无他法。如果应用程序是动态链接的,您可以确定它使用的是哪个版本的 Qt,它是用什么编译器编译的,以及可能的 Qt 配置选项集。然后您可以使用相同的编译器和相同的 Qt 版本编译您自己的代码,并且 inject it into the running application .然后,您可以枚举可见窗口及其子窗口,并找到您想要的控件。

关于c++ - 使用win32 api在qwidget中填充文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21232502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com