我有一个应用程序,我试图在Windows上自动化。我需要找到在应用程序内运行的窗口的位置,然后在应用程序上自动执行几个鼠标事件。
在我自动化的软件的先前版本中,我能够使用C#中的GetWindowText WinAPI函数(与GetWindowTextLength结合)搜索进程的子窗口。
软件制造商现在已经更新了软件并更新了子窗口的绘制方式。现在每个窗口都没有标题,并且类名为QWidget。我不能再使用旧的策略来查找子窗口位置。我认为使用QWidget意味着窗口系统使用Qt框架。
有没有办法使用PInvoke从QWidget中提取任何数据,以便我可以识别我的窗口?
答案 0 :(得分:1)
这里有几个问题。一个是你不能从另一个进程获得“非共享”数据。你可以通过像GetWindowLong
这样的方法来获取窗口数据;但除非您知道有关QWidget在该数据中的作用的具体数据(另一个问题),否则您无法对数据做多少。
另一个问题是,如果要在托管应用程序中使用大多数QT对象(可以使用C ++ / CLI和IJW执行此操作),则需要在应用程序中初始化A QT Application对象...我不知道如何这会影响你想做的事。