FSCommand函数用法(一)
?fscommand(cmd_string,?arg_string)?
?执行主机端指令。cmd_string指定所要执行的指令名,可为FlashPlayer的?
?指令或浏览器javascript函数。arg_string声明该指令所用到的参数。?
?FlashPlayer的指令有(只能在独立播放器时使用):?
?"fullscreen"?是否全屏播放,参数为true或false?
?"allowscale"?是否允许通过拉伸窗口缩放影片,参数为true或false?
?"showmenu"?是否在播放器显示菜单,参数为true或false?
?"trapallkeys"?是否屏蔽播放器的快捷键(如Esc表示停止播放并恢复?
?"save"?隐藏属性,作用是存变量到文本文件.
?视窗显示),参数为true或false。但Alt+F4系统快捷?
?键(关闭窗口)依然可用。?
?"exec"?运行arg_string所指定的文件。
?
FSCommand语句中的exec命令可以使swf?文件具有读写磁盘的功能?
?这部分内容说的是,FSCommand->exec命令与操作系统进行交互的用法,包括如何打开本地文件,存储文件,建
?立目录,打开浏览器窗口以及其它外部程序。针对MAC机和PC机使用不同的操作系统,FSCommand语句在实际写
?法上不尽相同,本文以PC机为例进行说明。(MAC机中的情况不作翻译)?
?适用于Windows?9X的FSCommand->exec命令详细说明:?
?(注:若要将以下命令句法移植到NT/2000/Me上,不能原封不动的照搬,需要略作改动,请自行实践。)?
?
1、存储文件到硬盘?
?有时我们想要在用户的机子上留下cookie,或在用户的硬盘上存储一些其它类型的信息,唯一可行的方法就是
?借助FSCommand,它通过调用用户Windows系统的command.com命令打开MS-DOS窗口实现文件的存储。因为使用
?DOS命令行的方式生成文件,所以MS-DOS窗口是必然要出现的,但在高配置机子上,这个过程一闪而过,用户
?不易察觉。使得该命令生效的前提是,含有这个FSCommand语句的swf文件必须是在本机上运行,而不是通过网
?络来访问。?
?举例:将swf文件中文本输入框(变量名为:textbox)的内容存到一个新创建的和swf文件位于相同目录下的名
?为textfile.txt的文件中,并作为值赋给新的变量var。如下书写FSCommand?语句:?
?打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部:?
?在Command框中填写:exec?(不要复选其后的Expression复选框)?
?在Arguments框中填写:"command.com"?add?chr(9)?add?"/c"?add?chr(9)?add?"echo"?add?chr(9)?add?
?"var="?add?textbox?add?">textfile.txt"?(一定要将其后的Expression复选框打上钩!)?
?若在Expert模式下编写,则应写成:?
?fscommand?("exec",?"command.com"?add?chr(9)?add?"/c"?add?chr(9)?add?"echo"?add?chr(9)?add?"var="?
?add?textbox?add?">textfile.txt");?
?说明:一个chr(9)?表示一个空格;/c为command.com的参数,加上这个参数其后的命令才能被执行;>是重定向
?符,我们正是靠它将变量值写入textfile.txt中。另外,还可指定文件存放目录,如要在用户桌面上建立
?textfile.txt文件,那么将">textfile.txt"改为">c:\\windows\\desktop\\textfile.txt"?
?【注】:\\?是转意字符。在Flash中,“?\?”被当成保留关键字,已失去了本来的意义,所以要想显示斜杠?\?
?,必须加前缀转意符?\?,使之是还原本来的意义,连在一起写就成了两个斜杠的形式。又比如,要想表示单引
?号,须写成?\’?这样的形式;实现回车的效果,须用转意符号?\r?。?
?
?2、删除硬盘上的文件?
?通过FSCommand->exec命令还可以删除硬盘上的文件,下面的语法只适用于Windows?9X系统。?
?举例:将前面创建的textfile.txt删除?
?打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部:?
?在Command框中填写:exec?(不要复选其后的Expression复选框)?
?在Arguments框中填写:"command.com"?add?chr(9)?add?"/c"?add?chr(9)?add?"del"?add?chr(9)?add?
?"textfile.txt"?(一定要将Expression复选框打上钩!)?
?若在Expert模式下编写,则应写成:?
?fscommand?("exec",?"command.com"?add?chr(9)?add?"/c"?add?chr(9)?add?"del"?add?chr(9)?add?
?"textfile.txt");?
?警告:使用这个命令要慎重,因为是采用DOS命令删除文件,在回收站里是看不到的被删文件的。还有,万勿用来做坏事。?
?
3、在硬盘上新建目录?
?通过执行FSCommand->exec生成的cookie若置于和所属swf文件位于同一目录下,容易被识别,用户在清理系统
?垃圾时极有可能将其清除,那样的话就失去意义了,考虑到用户一般不会轻易删除文件夹,我们专门新建一个
?目录存放cookie不失为一个好计。?
?举例:在swf文件所在目录下新建一个名为textfile的子目录?
?打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部:?
?在Command框中填写:exec?(不要复选其后的Expression复选框)?
?在Arguments框中填写:"command.com"?add?chr(9)?add?"/c"?add?chr(9)?add?"md"?add?chr(9)?add?
?"textfile"?(一定要将Expression复选框打上钩!)?
?若在Expert模式下编写,则应写成:?
?fscommand("exec","command.com"?add?chr(9)?add?"/c"?add?chr(9)?add?"md"?add?chr(9)?add?"textfile"?
?说明:md是DOS命令集中用来建立目录的专用命令;如果换成rd则可以删除硬盘上已存在的目录,提醒诸位三思而后行。?
?
?
用FSCommand调用EXE可执行程序
?我们都知道,调用一个可执行程序(扩展名为.exe或.bat或.com)?和打开一个一般文件是不同的,前者可自动运
?行,而后者需要相应的可执行程序支持打开,像扩展名为doc和pdf的文件必须由相应的可执行程序才能打开阅
?读。分三种情况考虑:?
?●?开启一个外部可执行程序:扩展名.exe可以省略。具体来说,若一个exe文件(假设为another.exe)和该
?swf文件本身在同一个目录下,则直接键入程序文件名即可。如:?
?fscommand("exec","another")?
?否则,应写明路径。如打开IE浏览器窗口:?
?fscommand("exec","c:\\progra~1\\intern~1\\iexplore")?
?//注意DOS下对长文件(夹)名的处理形式。?
?下面两种情况也可以不写路径——?
?(1)当可执行程序是在c:\windows目录下时,可以不写路径。如调用windows的计算器,下面三种写法均可:?
?fscommand("exec","c:\\windows\\calc.exe")?
?fscommand("exec","c:\\windows\\calc")?
?fscommand("exec","calc")?
?(2)调用DOS命令也可省略路径。如下例打开MS-DOS下的Edit编辑器:?
?fscommand("exec","edit.com")?
?如果熟悉批处理文件写法,通过FSCommand->exec命令执行批处理文件可以一举多得。?
?●?调用默认程序打开一般文件:这种情况不能省略扩展名,同样要注意文件路径。比如我们要打开和该swf文
?件本身在同一个目录下的名为fs.htm的文件,则命令写作:?
?fscommand("exec","start"?add?chr(9)?add?"fs.htm")?
?执行后,如果用户机子默认的浏览器是IE,则自动调用IE打开这个网页文件。?
?●?指定程序打开一个一般文件:Windows并未规定一种类型的文件只能由一种程序打开(比如.txt文件既可以
?用记事本打开,也可以用写字板阅读),这就使我们可以任意选择可用于打开一般文件的可执行程序。当然前
?提是在大多数用户机子上都能够找到我们所指派的可执行程序,因此实际上能选取的是那些常用的、随windows?
?9X预装的程序,像记事本(notepad)、写字板(write)、IE浏览器(iexplorer)、command命令等等。如我们希望
?调用客户机上的“写字板”程序,打开一个和该swf文件本身在同一个目录下的名为fs.txt的文本文件,可以这
?么写命令:?
?fscommand("exec","c:\\windows\\write.exe"?add?chr(9)?add?"fs.txt")?
?前已述及,凡是在c:\windows目录下的可执行程序,在书写FSCommand->exec命令时都可以省略路径,简写成:
?fscommand("exec","write"?add?chr(9)?add?"fs.txt")?也是正确的。
?以上只对FlashMX以下版本才有效
看了你的这几篇文章, 收获很多,看的出来, 你是web编程, 数据库和flash方面的专家。 我最近需要一个辅助功能, 用flash来完成, 但是我自己对于flash一窍不通,能得到你的帮助吗?
我的需求是将数据库中取出的数据在flash中展示出来,然后从flash中录入数据存入数据库。我能想到的是将数据库中的数据生成xml传入flash,但是不知道怎么从flash中将数据返回。
我的邮箱wuyuanjiayan@163.com, qq:276158128
期待你的回复。