我可以为 Adobe AIR 应用程序分配全局热键吗?
Posted
技术标签:
【中文标题】我可以为 Adobe AIR 应用程序分配全局热键吗?【英文标题】:Can I assign a global hotkey to an Adobe AIR app? 【发布时间】:2010-09-14 07:01:11 【问题描述】:是否可以为 Adobe AIR 应用程序中的特定功能分配全局热键,即无论应用程序是否处于活动状态,应用程序功能都会响应热键(它当然必须在运行,但只能在系统托盘中运行)。
【问题讨论】:
【参考方案1】:我认为 Adobe AIR 本身不可能做到这一点。我能想到的唯一方法:
-
安装第 3 方热键应用程序(如 AutoHotkey 或 HotKeyBind)
配置热键应用程序以使 CTRL+ALT+Q 启动
"
c:\programs\thvo42\coolapp.exe --hotkey q
"
在您的 AIR 应用程序中,注册 NativeApplication.invoke 事件,并观察诸如“--hotkey q”之类的参数以了解 Q 热键被按下,然后采取相应的行动。
当然,这有点麻烦,也许通过一些黑客攻击,您可以将其全部整合到一个安装文件中。
【讨论】:
谢谢,现在应该可以了。关于invoke的关键是:“当一个应用程序被第二次调用时,该应用程序的另一个实例并没有启动。相反,第一个实例接收到一个额外的invoke事件。” (来源:上面链接的 Adobe AIR 文档)【参考方案2】:来自参考手册:
要全局监听关键事件,请在舞台上监听捕获和目标或冒泡阶段。
【讨论】:
全局在 AIR 应用程序中,还是整个桌面?我很确定舞台只有在 AIR 应用程序处于焦点时才会响应按键。【参考方案3】:SWFKit 为您的 flash/flex 电影创建一个包装器,并允许访问系统 DLL 和其他好东西,但不幸的是它会导出为 .exe,因此只有 Windows 而没有 AIR。
ASFAIK,单独使用AIR是不支持的。
【讨论】:
以上是关于我可以为 Adobe AIR 应用程序分配全局热键吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在用于桌面 AIR 应用程序的 Adobe Flex 项目中使用诸如 turn.js 之类的 javascript 库吗?