从c++代码控制不同的应用程序(Adobe Reader,Word,Windows Media Player,Power

Controlling different apps (Adobe Reader,Word,Windows Media Player,Powerpoint,etc) from C++ code

本文关键字:Word Reader Windows Media Power Player Adobe 控制 代码 c++ 应用程序      更新时间:2023-10-16

我即将完成我的最后一个学位项目。我正在创建一个系统,它可以读取来自微软Kinect的手势,然后做出一些动作。所以现在我想加入一些与一些著名应用程序的交互。

例如,我想"告诉"adobereader(有焦点)转到下一页或"告诉"Windows Media Player停止音乐。

哪一个是最好的方法?我试图发送一个击键到应用程序的窗口处理程序,但它没有工作。然后我意识到,在一个窗口处理程序中还有其他几个窗口处理程序,但我无法访问它们。

提前感谢!

对于这样的问题,通常只有几个"可接受的"解决方案:

模拟用户输入

程控发送按键和鼠标点击

    优点:与你能想到的大多数GUI程序兼容缺点:笨拙,不擅长处理任何类型的意外行为(即错误对话框)。必须提前知道你希望与哪些窗口进行沟通。对话框从一个版本更改到下一个版本,因此您的程序经常在新版本中停止工作。
<

程序API/strong>

使用程序本身能够理解的调用(play, stop等)直接与程序通信。

    优点:比模拟输入更容易编程,更干净,bug更少缺点:很少有应用程序真正公开API。对于那些这样做的,你被限制在API支持的功能(可能不包括程序所能做的一切)。
<

脚本/strong>

一些程序允许脚本语言(例如VBScript)

  • 优点:与API
  • 相同的优点缺点:必须以某种方式让程序打开脚本,这可能很容易,也可能不容易,这取决于程序。

至于那些节目,我不能评论。我不知道它们是否公开了某种API。我想他们中的一些可能会(例如媒体播放器,我认为有一些)。但不要引用我的话。

查看autohotkey

http://www.autohotkey.com/

它是一个工具,你可以创建控制鼠标/键盘的脚本。

一个建议是链接一个手势到一个自动热键脚本。这样,您的程序可以非常可配置,您可以很容易地测试脚本。