关于flash调用外部程序的方法

 
在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">
<supportedProfiles>extendedDesktop </supportedProfiles>
<id>no-name</id>
<version>1.0</version>
<filename>未命名-1.exe</filename>
<description/>
红色的部分是添加的,再次进行测试即可。


效果如下:
点击按钮“记事本”则打开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();
  }
 }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值