浅谈:Flash调用外部和执行可执行程序(as 3.0)

 

title

(注:本篇文章讨论的是as 3.0CS3为环境举例的)

对于“如何用Flash来调用和执行可执行程序”这个话题,目前网上的讨论的结果是五花八门,而且大多数不是没有结果,就是说的含糊不清,要不然就是过时了,总之,很难找到一个很满意的答案。

    凑巧,我最近对这个问题也进行了一番研究,有了一点点自己的经验,在此分享一下~

 

    之前,有听同学说过,Flash不可以调用执行外部文件,理由很有道理,试想象如果可以用Flash SWF 文件调用任何一个应用程序,那么将是一件极为恐怖的事情,比如说如下代码:

fscommand(“exec”, “format D;”);/*格式化D*/

fscommand(“exec”, “del /Q/F/ D:/*.*”);/*删除所有D盘下的文件*/

是不是比倚天剑、屠龙刀还厉害呢?

经过查资料(见图书《Flash 第一步 ActionScript 陈冰 26.13节),发现原来前人已经发现了这个问题,自从Flash Player 7 之后, Macromedia对通过Flash Player 调用可执行程序做了很多限制,这些限制使得这些恐怖的事情将不再可能发生,至少不会在你浏览网页时发生了

但是,不管过程怎么样,最后的结果是:用Flash调用外部可执行文件 是可行的!

下面说说我的方法:

1.       .fla目录下,建立一个名为:fscommand的文件夹,把想要被打开的exe放进去,(这里就拿application2.exe举例);

2.       下面就是代码的编写。现在舞台上面建立一个按钮元件,在属性面板中为实例起名(举例为Button2),如图:

图2

 

再在其脚本编写处,写如下代码:

function openTheEXE2(event:MouseEvent):void

{

    fscommand(“exec”, “application2.exe”);

}                        

/*函数名是随意的,只要上下两个地方写的一样就行*/

Button2.addEventListener(MouseEvent.CLICK, openTheEXE2);

如图:

图3

 

 

3.       编译生成SWF文件后,单独打开,然后:【文件】->【创建播放器】,保存为exe格式的文件(随便起个名字),原因是只有exe格式才能起作用。

如图

图1

 

 

最后生成文件,如图:

 

图4

 

 

 

如此便大功告成了,图中executionOpen.exe文件,便是我生成的最终的文件,用它即可打开文件夹fscommand中的exe文件。感觉是不是很爽呢?

可能有的人会仍然不爽,因为还有一些可能出错的细节:

1.       按钮元件总是显示没有被定义。打开一个空的 .fla文件,在第一帧的XX图层,加入按钮,再命名实例(比如Button2)。然后再在XX图层下,写入以上的代码,然后编译,这回是不是就可以通过了呢?其实,这是as 3.0中的规则,不能再像1.02.0那样随意的开始一个实例的生命,并且绑定一段代码,必须在第一帧就搞定,其实这样做不见得就是不好,你可以通过编辑多个场景,之间来回调用,来实现原来的功能,保证需要写代码的地方总是第一帧即可。

2.       Fscommand文件。为什么要建立它呢,它的名字必须是这样吗?其实,我没有做深入的研究,但我能保证,如果这样做,就没有错,而且,在代码中,被调用的外部文件连路径都不用写,真的很不可思议,但是又能隐隐约约感到些什么内在的关系。

没有stop()Onrelease()等等这些元老级代码了。这是3.0的规则,就不说为啥了。OnreleaseButton2.addEventListener(MouseEvent.CLICK, XXXfunction)替代了。

3.       按钮元件,真的只用是个按钮就行,不用再像2.0时代,还要单另放到一个影片剪辑元件中,才能有地方写代码,才能用。

就说这么多,希望讲的还比较明白~