1

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

在我正在自动化的软件的前一个化身中,我能够搜索使用 C# 中的 GetWindowText WinAPI 函数(与 GetWindowTextLength 组合)命名的进程的子窗口。

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

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

4

1 回答 1

1

这里有几个问题。一个是您无法从另一个进程中获取“未共享”数据。您可以通过调用以下方法获取窗口数据GetWindowLong;但是除非您知道 QWidget 在该数据中所做的具体数据(另一个问题),否则您对数据无能为力。

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

于 2012-08-28T17:28:58.507 回答