加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:09:37 所属栏目:百科 来源:网络整理
导读:原文网址: http://blog.sina.com.cn/s/blog_6c9d65a10100t1ir.html ? 在flash中调用外部程序的另一种方法 之前在fscommand中调用外部程序,今天有网友针对fscommand的安全性问题提出质疑,另外fscommand调用批处理会出现一个大大的黑框。我们目的是在本机运
原文网址: http://blog.sina.com.cn/s/blog_6c9d65a10100t1ir.html
?
在flash中调用外部程序的另一种方法
之前在fscommand中调用外部程序,今天有网友针对fscommand的安全性问题提出质疑,另外fscommand调用批处理会出现一个大大的黑框。我们目的是在本机运行程序时调用外部程序,可以换一种方法,发布成air即可,这种方法直接指定应用程序及其参数即可。

类:NativeProcess,此类提供命令行集成和常规启动功能。NativeProcess 类允许 AIR 应用程序在主机操作系统上执行本机进程。
环境要求:air 2

他有两个常用的方法:exit(force:Boolean=false):void 尝试退出本机进程,start(info:NativeProcessStartupInfo ):void 启动由指定的启动信息标识的本机程序
对于start的参数是一个类,提供启动主机操作系统上的进程的基本信息

以单击按钮打开word文件为例
环境:
word安装位置:C:Program FilesMicrosoft OfficeOffice12winword.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); ???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(); ??} ?} }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读