我想从 Adobe AIR 应用程序中按下一个按钮并执行一些已安装的程序。例如,我会有一个名为“Start Winamp”的按钮。当按下它时,它应该直接启动 Winamp.exe...我不想执行一些命令行的东西,我只想启动一个 exe。或者……是一样的吗?请让我知道这是否可能。
谢谢你。
我想从 Adobe AIR 应用程序中按下一个按钮并执行一些已安装的程序。例如,我会有一个名为“Start Winamp”的按钮。当按下它时,它应该直接启动 Winamp.exe...我不想执行一些命令行的东西,我只想启动一个 exe。或者……是一样的吗?请让我知道这是否可能。
谢谢你。
使用 AIR 2.0,您现在可以:
if(NativeProcess.isSupported)
{
var file:File = File.desktopDirectory;
file = file.resolvePath("StyleLookupold.exe");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
}
您还需要将其添加到您的描述符文件中。
<supportedProfiles>extendedDesktop</supportedProfiles>
没有直接的方法可以做到这一点。试试CommandProxy。
非常仔细地阅读博客文章。您确实需要创建两个不同的项目:一个本机操作系统可执行文件和一个 AIR 应用程序。本机可执行文件会启动您的 AIR 应用程序。AIR 应用程序依次请求可执行文件来处理操作系统级别的请求。
从Google Code下载源代码并创建两个项目——一个用于示例 C# exe 的 Visual Studio/Mono,另一个用于 AIR 应用程序。这是一个链接,描述了如何设置前者。
在 AIR 应用程序的主 MXML 文件中,您需要执行以下操作:
创建一个CommandProxy
对象,添加一些事件监听器,用于连接检测、Command
响应和错误。
通过connect
调用连接到本机 exe
在 的事件处理程序中connect
,创建一个新的Command
egScreenshotCommand
并执行它(通过CommandProxy.execute
方法)
……就是这样!
希望这可以帮助。
答案分为两部分。一,如果你真的必须运行一个 .exe 文件,唯一的办法就是使用命令代理。就个人而言,在 .Net/Mono 中使用一个有点夸大其词。我不知道 Mono,但是要求您的用户安装 .Net和AIR 会吓跑几乎所有人。另外,如果我要让用户安装 Mono,为什么不直接用 Mono 编写 UI 并完成它......?
你可以在 Ruby 中编写一个简单的命令代理,它实际上是跨平台的,并且在大约 5 分钟内非常省事(我刚刚做到了,如果你想要代码在这里评论我,我会发布它)。如果您想在启动后控制该过程,这是一项更严肃的努力。对于分发等,我相信Ruby会更容易。
另一方面,检查一下这个想法。Jeff 建议使用来自 AIR 的 URL 请求。基本上,如果您的浏览器能够正确解释它,那么您就可以开始了。代码看起来像这样
var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u');
我认为,如果有一点创意(尤其是 Mime 类型),第二种解决方案甚至可能适用于 Winamp(例如,播放列表或其他东西)。
祝你好运,谢谢你的问题,这可能是一个骗局,但谷歌只找到了这个,所以你赢了:)
我认为 FluorineFx 可以满足您的要求:http ://aperture.fluorinefx.com/?p=5
AIR 2.0 将具备这种能力。
预计将在年底(2009 年)推出测试版,并于 2010 年上半年发货。
http://blogs.adobe.com/air/2009/10/previewing_adobe_air_2_at_adob.html
本机进程 API 从 AIR 2 开始,开发人员可以访问本机进程 API,使应用程序能够调用本地计算机上的本机应用程序并与之通信。为了保持 .air 文件格式的跨平台特性,利用本机进程 API 的应用程序必须部署为本机安装程序,例如 .exe 和 .dmg。AIR 运行时 SDK 将支持生成基本的本机安装程序。
请参阅此博客文章:从 AIR 运行 exe 文件
简短的摘要:
“如果您确实需要运行外部 exe 文件,并且没有其他方法可以解决您的问题,那么您将确保用户在启动 AIR 应用程序之前运行另一个软件。”
另一种方法是在本地机器上启动简单的网络服务器(在后台),并使用 HTTPService 调用它的方法。
例如,后台网络服务器可以是 python: http: //fragments.turtlemeat.com/pythonwebserver.php
它可以启动可执行文件并提供 AIR 无法提供的功能。
这使 Flex 代码保持干净,因为它只实现了 REST 接口和 python(或其他语言)的其余工作。您还可以从使用 python 作为 sqlite 数据库的接口中受益,或者您可以将整个 django 作为网络服务器启动。
唯一的缺点是服务器必须已经在 localhost 上运行.. 并且正在监听某个端口(即 81)。您可以通过在系统启动时启动服务器来做到这一点。
这不是最好的方法,但在某些情况下,它可以像对我一样帮助您的项目。
在 mac os x 中,如果要启动 .app 文件,则必须为文件路径编写以下内容。(假设app的名字是xxx)
if(NativeProcess.isSupported)
{
//not correct
//file = file.resolvePath("/Applications/xxx.app");
//correct
file = file.resolvePath("/Applications/xxx.app/Contents/MacOS/xxx");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
}
或者简单我的网站为新应用程序创建自定义安装程序阅读更多
额外提示:我们建议您使用 Enigma Virtual Box,因为它是免费的,它非常适合应用程序虚拟化或像 BoxedApp Packer 这样的 Exe-Packer,但它比 Enigma Virtual Box 贵很多谢谢!