C#PInvoke和QWidget

时间:2012-08-28 17:05:08

标签: c# pinvoke qwidget

我有一个应用程序,我试图在Windows上自动化。我需要找到在应用程序内运行的窗口的位置,然后在应用程序上自动执行几个鼠标事件。

在我自动化的软件的先前版本中,我能够使用C#中的GetWindowText WinAPI函数(与GetWindowTextLength结合)搜索进程的子窗口。

软件制造商现在已经更新了软件并更新了子窗口的绘制方式。现在每个窗口都没有标题,并且类名为QWidget。我不能再使用旧的策略来查找子窗口位置。我认为使用QWidget意味着窗口系统使用Qt框架。

有没有办法使用PInvoke从QWidget中提取任何数据,以便我可以识别我的窗口?

1 个答案:

答案 0 :(得分:1)

这里有几个问题。一个是你不能从另一个进程获得“非共享”数据。你可以通过像GetWindowLong这样的方法来获取窗口数据;但除非您知道有关QWidget在该数据中的作用的具体数据(另一个问题),否则您无法对数据做多少。

另一个问题是,如果要在托管应用程序中使用大多数QT对象(可以使用C ++ / CLI和IJW执行此操作),则需要在应用程序中初始化A QT Application对象...我不知道如何这会影响你想做的事。