在flash中调用外部程序的另一种方法
之前在fscommand中调用外部程序,今天有网友针对fscommand的安全性问题提出质疑,另外fscommand调用批处理会出现一个大大的黑框。我们目的是在本机运行程序时调用外部程序,可以换一种方法,发布成air即可,这种方法直接指定应用程序及其参数即可。
类:NativeProcess ,此类提供命令行集成和常规启动功能。NativeProcess 类允许 AIR 应用程序在主机操作系统上执行本机进程。
环境要求:air 2
他有两个常用的方法:exit(force:Boolean=false):void 尝试退出本机进程,start(info:NativeProcessStartupInfo
):void 启动由指定的启动信息标识的本机程序
对于start的参数是一个类,提供启动主机操作系统上的进程的基本信息
以单击按钮打开word文件为例
环境:
word安装位置:C:\Program Files\Microsoft Office\Office12\winword.exe
word文档:d:\cdy.docx
//2007版本
import flash.events.MouseEvent;
import flash.desktop.NativeProcess;
import flash.filesystem.File;
import flash.desktop.NativeProcessStartupInfo ;
var proess:NativeProcess;
var file:File;
var info:NativeProcessStartupInfo ;
bt1.addEventListener(MouseEvent.CLICK, bt1Handler);
function bt1Handler(e:MouseEvent):void
{
//创建文件对象
file = new File("C:/Program Files/Microsoft Office/Office12/winword.exe");
//创建启动进程信息
info = new NativeProcessStartupInfo ();
//指定file对象,存放的是应用程序的路径
info.executable = file;
//定义一个数组,提供程序程序的参数
var arr:Vector.<String> = new Vector.<String>();
arr.push("d:/cdy.docx");
info.arguments = arr;
//创建进程并启动进程
proess = new NativeProcess();
proess.start(info);
}
到目前我们测试会出现编译出错,在配置air发布的时候,会创建一个xml文件,我的是:
未命名1-app.xml,进入添加一行即可:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<application xmlns="http://ns.adobe.com/air/application/2.0">
红色的部分是添加的,再次进行测试即可。
效果如下:
点击按钮“记事本”则打开word文档(我开始用记事本测试的,后用word测试的都成功)
————————————————————————————————————————————————————————
我自己的程序实例:
拿以播放幻灯片方式启动PPT为例
package
{
import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filesystem.File;
public class AirTest extends Sprite
{
private var proess:NativeProcess = new NativeProcess();
private var btnOpen:Sprite;
private var btnClose:Sprite;
public function AirTest()
{
btnOpen = new Sprite();
btnOpen.graphics.beginFill(0xff0000);
btnOpen.graphics.drawCircle(30,30,30);
btnOpen.graphics.endFill();
btnOpen.x = 100;
btnOpen.y = 100;
this.addChild(btnOpen);
btnOpen.addEventListener(MouseEvent.CLICK,btnOpenHandler);
btnClose = new Sprite();
btnClose.graphics.beginFill(0xffff00);
btnClose.graphics.drawCircle(30,30,30);
btnClose.graphics.endFill();
btnClose.x = 300;
btnClose.y = 100;
this.addChild(btnClose);
btnClose.addEventListener(MouseEvent.CLICK,btnCloseHandler);
}
private function btnOpenHandler(e:MouseEvent):void
{
//创建文件对象
// var file:File = new File("C:/Program Files/Microsoft Office/Office14/winword.exe");
var file:File = new File("C:/Program Files/Microsoft Office/Office14/POWERPNT.exe");
//创建启动进程信息
var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
//指定file对象,存放的是应用程序的路径
info.executable = file;
//定义一个数组,提供程序程序的参数
var arr:Vector.<String> = new Vector.<String>();
arr.push("/S");
// arr.push("E:/工作/我的工作/**/详细设计/详细设计前台功能说明(ck).pps");
arr.push("E:/工作/我的工作/**/详细设计/前台功能说明(ck).ppt");
info.arguments = arr;
//创建进程并启动进程
proess.start(info);
}
private function btnCloseHandler(e:MouseEvent):void
{
proess.exit();
}
}
}
{
import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filesystem.File;
public class AirTest extends Sprite
{
private var proess:NativeProcess = new NativeProcess();
private var btnOpen:Sprite;
private var btnClose:Sprite;
public function AirTest()
{
btnOpen = new Sprite();
btnOpen.graphics.beginFill(0xff0000);
btnOpen.graphics.drawCircle(30,30,30);
btnOpen.graphics.endFill();
btnOpen.x = 100;
btnOpen.y = 100;
this.addChild(btnOpen);
btnOpen.addEventListener(MouseEvent.CLICK,btnOpenHandler);
btnClose = new Sprite();
btnClose.graphics.beginFill(0xffff00);
btnClose.graphics.drawCircle(30,30,30);
btnClose.graphics.endFill();
btnClose.x = 300;
btnClose.y = 100;
this.addChild(btnClose);
btnClose.addEventListener(MouseEvent.CLICK,btnCloseHandler);
}
private function btnOpenHandler(e:MouseEvent):void
{
//创建文件对象
// var file:File = new File("C:/Program Files/Microsoft Office/Office14/winword.exe");
var file:File = new File("C:/Program Files/Microsoft Office/Office14/POWERPNT.exe");
//创建启动进程信息
var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
//指定file对象,存放的是应用程序的路径
info.executable = file;
//定义一个数组,提供程序程序的参数
var arr:Vector.<String> = new Vector.<String>();
arr.push("/S");
// arr.push("E:/工作/我的工作/**/详细设计/详细设计前台功能说明(ck).pps");
arr.push("E:/工作/我的工作/**/详细设计/前台功能说明(ck).ppt");
info.arguments = arr;
//创建进程并启动进程
proess.start(info);
}
private function btnCloseHandler(e:MouseEvent):void
{
proess.exit();
}
}
}