-1

好吧,标题似乎很清楚我想要做什么。更准确地说:我想创建一个以两种方式操作鼠标的程序(首选 c++ 或 java),例如:更改其位置和进行点击。我正在考虑使用 allegro(它有鼠标例程来操作上面提到的东西)或 sdl(我不知道是否有那种例程)。我尝试使用 allegro 失败。我的问题是我几乎不能“做”点击。我也无法将程序更改的内容重定向到其他窗口。

有小费吗?

4

1 回答 1

2

有几种方法可以尝试在 Windows 上自动化其他应用程序...

在最简单的级别上,可以使用PostMessage将键盘和鼠标消息发布到另一个应用程序的窗口。这样做的好处是,即使其他应用程序被最小化,它也可以工作。不幸的是,这种方法跳过了大部分输入处理逻辑,因此无论您发送多少消息,直接访问键状态的应用程序GetAsyncKeyState都不会看到(例如)控制键处于“关闭”状态。WM_KEYDOWN, vk=VK_CONTROL

正如 Hans Passant 评论的那样,SendImput将输入事件放在较低级别的输入事件队列中,因此可以完全模拟修饰键。然而,这些输入事件不会发布到窗口,因此要成功传递输入事件,需要遵循正常的窗口激活和焦点规则。也就是说,这是大多数测试自动化软件使用的方法(这也是为什么大多数测试自动化软件要求被测试的应用程序是活动应用程序的原因)。

我将提到的最后一种自动化方法——遗憾的是最不可能工作的方法——是Microsoft UI Automation框架。该框架旨在允许残疾和/或特殊需要用户使用应用程序。可悲的是 - 很少有软件提供商会费心在他们的产品中实现这个 API。

于 2012-04-09T10:03:55.223 回答