我有问题。我正在使用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似乎不起作用,因为可能的控件(很可能很可能是Qlineit)支持其他消息来完成此工作。是否有针对这些事件的规格,我谷歌搜索了很多,但找不到任何合适的东西。使该代码正常工作的最直接方法是什么?我可以使用QT的事件表映射吗?我是否必须使用一些QT标头并将其与DLL链接(这可能是一个问题,因为许可)?
预先感谢。
qt,至少4.8和5.x使用外国控件。窗户以外的小部件都没有本地手柄。您的EnumChildWindows
很可能找不到您认为正在发现的东西。
如果您无法访问QT应用程序的源代码,那么您无能为力,而无需将自己的代码注入运行应用程序。如果该应用程序是动态链接的,则可以弄清楚它正在使用的QT版本,以及所编译的编译器以及可能的QT配置选项集。然后,您可以使用同一编译器并使用相同的QT版本编译自己的代码,并将其注入运行应用程序。然后,您可以枚举可见的窗户及其孩子,并找到您追求的控制。