从c++代码控制不同的应用程序(Adobe Reader,Word,Windows Media Player,Power
Controlling different apps (Adobe Reader,Word,Windows Media Player,Powerpoint,etc) from C++ code
我即将完成我的最后一个学位项目。我正在创建一个系统,它可以读取来自微软Kinect的手势,然后做出一些动作。所以现在我想加入一些与一些著名应用程序的交互。
例如,我想"告诉"adobereader(有焦点)转到下一页或"告诉"Windows Media Player停止音乐。
哪一个是最好的方法?我试图发送一个击键到应用程序的窗口处理程序,但它没有工作。然后我意识到,在一个窗口处理程序中还有其他几个窗口处理程序,但我无法访问它们。
提前感谢!
对于这样的问题,通常只有几个"可接受的"解决方案:
模拟用户输入
程控发送按键和鼠标点击
- 优点:与你能想到的大多数GUI程序兼容缺点:笨拙,不擅长处理任何类型的意外行为(即错误对话框)。必须提前知道你希望与哪些窗口进行沟通。对话框从一个版本更改到下一个版本,因此您的程序经常在新版本中停止工作。
程序API/strong>
使用程序本身能够理解的调用(play, stop等)直接与程序通信。
- 优点:比模拟输入更容易编程,更干净,bug更少缺点:很少有应用程序真正公开API。对于那些这样做的,你被限制在API支持的功能(可能不包括程序所能做的一切)。
脚本/strong>
一些程序允许脚本语言(例如VBScript)
- 优点:与API 相同的优点缺点:必须以某种方式让程序打开脚本,这可能很容易,也可能不容易,这取决于程序。
至于那些节目,我不能评论。我不知道它们是否公开了某种API。我想他们中的一些可能会(例如媒体播放器,我认为有一些)。但不要引用我的话。
查看autohotkey
http://www.autohotkey.com/
它是一个工具,你可以创建控制鼠标/键盘的脚本。
一个建议是链接一个手势到一个自动热键脚本。这样,您的程序可以非常可配置,您可以很容易地测试脚本。
相关文章:
- 使用 minijson-reader 库读取 JSON 字符串时出现问题
- 对于单个数据 WORD 的 memcpy 和赋值语句有什么区别?
- 使用 SVM 进行分类,使用来自 Bag of Word 的词汇构建
- 将 64 位指针打包到 4 个 WORD 中
- 在Word中重复段落
- Reader类实现中的文件读取错误
- EM_SETSEL在.docx(word文档)中不起作用
- 比较 WORD 特征
- 如何在C++中删除Word文档的写保护
- 如何使用 word 对象模型中的C++接口在 word 中添加自定义 XML 艺术
- C++可以从文本文件复制并粘贴到打开的Word程序中
- Borland C++ - 使用OLE使用Word打开RTF文件
- Word.exe 已停止使用递归工作
- Qt C++macOS问题。我正在使用函数 .find( "a word") 在多集中搜索单词,它适用于 Windows 但不适用于 mac
- 初学者 - 我的"produce word backwards"程序有什么问题?
- sscanf_s:格式字符串"%d"需要类型为"int *"的参数,但可变参数 4 的类型为"WORD *"
- 从 C 标头生成 MS Word 表
- 如何在C++中将字符串替换为"Match case"和"Match whole word"
- "WORD":"char [20]"与"无符号短"的间接级别不同
- 从c++代码控制不同的应用程序(Adobe Reader,Word,Windows Media Player,Power