我即将完成我的最终学位类(class)。我正在创建一个系统,该系统从Microsoft Kinect读取手势,然后执行一些操作。所以现在我想包括与一些著名应用程序的交互。

例如,我想“告诉” Adob​​e Reader(具有焦点)以转到下一页,或者“告诉” Windows Media Player以停止音乐。

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

提前致谢!

最佳答案

对于此类问题,通常只有几种“可接受的”解决方案:

模拟用户输入

以编程方式发送击键和鼠标单击

  • 优点:与大多数GUI程序兼容,您可以想到
  • 缺点:Kludgy,不善于处理任何类型的意外行为(即错误对话框)。必须提前知道您希望与哪些窗口进行通信。对话框从一个版本切换到另一个版本,因此您的程序通常会停止使用新版本。

  • 程序API

    使用本机可以理解的调用(播放,停止等)直接与程序进行通信。
  • 优点:与模拟输入
  • 相比,它更轻松的编程体验,更干净的错误和更少的错误
  • 缺点:实际上很少有应用程序公开API。对于那些这样做的人,您仅限于API支持的功能(可能不包括程序能够提供的所有功能)。

  • 脚本

    一些程序允许脚本语言(例如VBScript)
  • 优点:与API
  • 相同的优点
  • 缺点:必须以某种方式以编程方式获取程序以打开脚本,这可能会或可能不容易,具体取决于程序。

  • 至于那些程序,我不能发表评论。我不知道他们是否公开任何类型的API。我想其中有些可能(例如媒体播放器,我认为其中有一些)。不过不要在那儿引用我。我希望这有帮助。

    关于c++ - 通过C++代码控制不同的应用程序(Adobe Reader,Word,Windows Media Player,Powerpoint等),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6830957/

    10-11 23:19
    查看更多