本次测试使用环境:Flex 4.0SDK + Flash CS5 IDE开发环境开发,根据AIR2.0支持本地应用程序的原则!
1. 新建一个AIR2.0文档
2. 场景中拖入一个按钮 并且实例名称为Btn,设置文档类CallEXE
3. 在文档类中输入以下代码:
package {
import flash.display.MovieClip;
import flash.desktop.NativeApplication;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.filesystem.File;
import flash.desktop.NativeProcessStartupInfo;
import flash.desktop.NativeProcess;
public class CallEXE extends MovieClip
{
private var file:File=new File();
private var nativeProcessStartupInfo:NativeProcessStartupInfo;
public function CallEXE():void
{
//使用静态属性 NativeApplication.nativeApplication 获取应用程序的 NativeApplication 实例
//指定在关闭所有窗口后是否应自动终止应用程序。
/*当 autoExit 为 true(默认值)时,如果关闭了所有窗口,则应用程序将终止。调度 exiting 和 exit 事件。如果 autoExit 为 false,则必须调用 NativeApplication.nativeApplication.exit() 才能终止应用程序。*/
NativeApplication.nativeApplication.autoExit=true;
//调用的文件名称
file=file.resolvePath("C:/windows/notepad.exe");
trace("file :",file.nativePath);
nativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
Btn.addEventListener(MouseEvent.CLICK, runTest);
}
private function runTest(event:MouseEvent):void
{
var process = new NativeProcess();
process.start(nativeProcessStartupInfo);
}
}
}
4. 调试AIR应用程序的时候,首先打开AIR2.0发布设置一下,点击确定
5. 会发现本程序目录下有一个CallEXE-app.xml,使用记事本或者DW打开
在<application xmlns="http://ns.adobe.com/air/application/2.0">后面加入:
<supportedProfiles>extendedDesktop </supportedProfiles>
并且保存!
6. 回到Flash CS5 IDE ,Ctrl+Enter测试!
7. 发布的时候,需要勾选以下设置,只能发布exe的时候能调用应用程序,而air不能。
AIR调用bat文件,需要先调用C:/WINDOWS/system32/cmd.exe文件,再把bat文件作为其执行参数传入。
var cmdFile:File=new File();
cmdFile = cmdFile.resolvePath("C://WINDOWS//system32//cmd.exe");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = cmdFile;
var processArgs:Vector.<String> = new Vector.<String>();
processArgs[0] = "/c C://TEST.BAT";
nativeProcessStartupInfo.arguments=processArgs;
var process = new NativeProcess();
process.start(nativeProcessStartupInfo);