VB 6.0中实现swf格式文件到exe格式文件的转换

来源 :数学学习与研究 | 被引量 : 0次 | 上传用户:netdownloadfile
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】exe格式的swf文件不过是一个Flash播放器程序后面跟着一个swf文件,两个文件合成一个文件.由于它自带了播放器,所以比较方便,但缺点是文件体积大.本文着重介绍运用VB 6.0实现对*.swf文件到*.exe文件的转换.
  【关键词】VB6.0;转换;Flash播放器
  1.引 言
  在实际教学中,我们经常会遇到这样的问题,我们制作的Flash课件拿到没有安装Flash播放器的机器上不能够播放演示.那么,有没有一种好的办法能够在没有安装Flash播放器的机器上顺利地播放Flash程序呢?带着这个问题,我们首先想到了格式转换,利用VB6.0能够很好地解决此问题.
  2.播放器对swf文件的处理
  Flash播放器在一个显示帧标签到来之前会处理显示帧标签之前swf文件的所有标签.在这个时候,播放列表被复制到屏幕上面,与此同时Flash播放器在处理下一帧之前是空闲的.第一帧所显示的内容,是在第一个显示帧标签之前的所有控制型标签操作产生的累积效果.第二帧所显示的内容,是从文件开始到第二个显示帧标签所有控制型标签操作产生的累积效果.以此类推.
  3.由swf文件转换为exe格式的文件
  swf文件转换为exe格式的文件转换步骤:
  (1)以二进制方式读入你选定的Flash播放器,并原封不动地写入新文件.这个播放器以Adobe Flash Player为宜.播放器的版本不要太高,6.0左右即可,因为版本越高,体积越大.
  (2)以二进制方式读入一个swf文件内容,并原封不动地写入新文件.
  (3)写入四个字节的文件标识符“56 34 12 FA”.
  (4)写入swf文件长度.
  4.代码实现过程
  新建一个工程,在窗体上添加3个文本框、1个按钮.
  Text1输入全路径源文件名,Text2输入转换后的全路径文件名,Text3输入全路径播放器文件名.
  按钮1的标题是“转为exe”.
  如下图所示:
  
  程序代码:
  Option Explicit
  Private Sub Text1_DblClick() ’选择源文件
  On Error GoTo 100
  CD.Filter = "*.exe;*.swf|*.exe;*.swf"
  CD.ShowOpen
  If Len(Dir(CD.FileName)) = 0 Then Exit Sub
  Text1 = CD.FileName
  Text2 = Left(Text1, Len(Text1) - 3) & IIf(LCase(Right(Text1, 3)) = "swf", "exe", "swf")
  100
  End Sub
  Private Sub Text3_DblClick() ’选择播放器
  On Error GoTo 100
  CD.Filter = "播放器文件(*.exe)|*.exe"
  CD.ShowOpen
  If Len(Dir(CD.FileName)) Then Text3 = CD.FileName
  100
  End Sub
  Private Sub Command1_Click() ’SWF转EXE
  If Len(Text1) = 0 Or LCase(Right(Text1, 3)) <> "swf" Then MsgBox "请选择要转换的 SWF 文件": Exit Sub
  If Len(Text3) = 0 Or LCase(Right(Text3, 3)) <> "exe" Then MsgBox "请输入播放器文件名": Exit Sub
  If Len(Text2) = 0 Then MsgBox "请输入要保存的 EXE 文件名": Exit Sub
  If SWFtoEXE(Text1, Text2, Text3) Then
   MsgBox "转换成功!"
  Else
   MsgBox "转换失败!"
  End If
  End Sub
  Private Sub Command2_Click() ’EXE转SWF
  If Len(Text1) = 0 Or LCase(Right(Text1, 3)) <> "exe" Then MsgBox "请选择要转换的 EXE 文件": Exit Sub
  If Len(Text2) = 0 Then MsgBox "请输入要保存的 SWF 文件名": Exit Sub
  If EXEtoSWF(Text1, Text2) Then
   MsgBox "转换成功!"
  Else
   MsgBox "转换失败!"
  End If
  End Sub
  Private Function SWFtoEXE(swfFile As String, exeFile As String, PlayreFile As String) As Boolean
  On Error GoTo 100
  Dim fLen As Long
  Dim Dat() As Byte
  Open swfFile For Binary As #1’打开待转换的SWF文件
  Open exeFile For Binary As #2’创建将生成的EXE文件
  Open PlayreFile For Binary As #3’创建将生成的EXE文件
  fLen = LOF(3)
  ReDim Dat(fLen - 1)
  Get #3, , Dat
  Put #2, , Dat ’将播放器写入文件2
  fLen = LOF(1)
  ReDim Dat(fLen - 1)
  Get #1, , Dat
  Put #2, , Dat ’将SWF文件写入到文件2
  ReDim Dat(3)
  Dat(0) = Val(&H56): Dat(1) = Val(&H34): Dat(2) = Val(&H12): Dat(3) = Val(&HFA) ’56 34 12 FA是EXE形式的标识符
  Put #2, , Dat ’写入标识符
  Put #2, , fLen ’写入SWF文件长度
  SWFtoEXE = True
  100
  Close
  End Function
  Private Function EXEtoSWF(exeFile As String, swfFile As String) As Boolean
  On Error GoTo 100
  Dim Dat() As Byte
  Dim fLen As Long
  Dim n As Long, i As Long, st As String
  Open exeFile For Binary As #1
  fLen = LOF(1) ’获取exe文件长度
  ReDim Dat(3)
  Get #1, fLen - 7, Dat ’获取exe格式的Flash文件标识
  For i = 0 To 3: st = st & Hex(Dat(i)): Next
  If st <> "563412FA" Then GoTo 100 ’如果不是EXE格式的Flash文件退出
  Get #1, fLen - 3, n ’获取exe文件中的swf部分长度
  ReDim Dat(n - 1)
  fLen = fLen - n - 7
  Get #1, fLen, Dat ’读取exe文件中的swf部分
  Close #1
  st = ""
  For i = 0 To 2: st = st & Chr(Dat(i)): Next
  If InStr("FWS,CWS", st) = 0 Then Exit Function ’如果不是EXE格式的Flash文件退出
  Open swfFile For Binary As #2
  Put #2, , Dat
  Close #2
  EXEtoSWF = True
  Exit Function
  100
  Close
  End Function
  以上程序代码为*.swf文件到*.exe文件的转换.由于篇幅有限,我们对以上的EXEtoSWF 函数的代码稍加改动,还可以由exe格式的文件中剥离出播放器来.
  【参考文献】
  [1]Visual Basic从入门到精通.北京:人民邮电出版社,2010.
  [2]剖析SWF文件结构探秘AVM运行原理.by laan,2009(12).
  [3]龚沛曾,等.Visual Basic程序设计简明教程.北京:高等教育出版社,2006.
  
其他文献
【正】为促进社会主义市场经济体制的建立和进一步扩大对外开放,推动我国国民经济持续、快速、健康发展,国务院决定,从1994年1月1日起,改革我国的外汇管理体制.中国外汇交易
【正】吐鲁番地区1994年工业经济运行始终没有摆脱低速低效的困境.地方全部工业企业完成总产值7.3亿元,较1993年上升9.15%,扣除物价因素实际为负增长.全地区38户主要工业企业
摘要:在教学过程中,对数学概念的本质属性强调不够,而学生平时仅就题解题,忽视了数学概念在解题过程中的重要作用,那么,時常会出现概念模糊、判断错误的现象。  关键词:概念;数学教学;体会
【摘要】本文给出了圆锥侧面上两点间最短曲线的方程。  【关键词】圆锥侧面;短程线;方程
【摘要】计算机系统在处理数学问题时具有快速、高精度的优点,由于计算机为离散系统,如何将连续域内的数学问题离散化是提高计算机求解数学问题速度与精度的关键.本文针对阻容电路进行了基于Z变换的离散域数学建模,介绍了连续域数学问题的离散化求解方法.  【关键词】Z变换;脉冲传递函数;阻容电路  一、连续域内的阻容电路数学模型建立  阻容电路中电容对电压变化产生的作用使其在滤波、振荡等电路中得到广泛应用.通
【摘要】 在数学课堂教学中我们追求的不应该只是有效的,更应该是高效的!教学要简约集中. 直指数学知识的本质,既拓展了学生的思维,又使抽象的数学知识在具体活动情境中获得表象,实现从具体形象思维到逻辑思维的过渡. 本文从找准切入点,让思维训练触及数学知识的内涵;找准思维连接点,让课堂对话集约而丰富和找准与媒介整合点,让课堂平实而有效来阐述课堂教学的有效性.   【关键词】 数学课堂;有效教学;思考  
【摘要】数学是人类文化的重要组成部分,它包含了丰富的文化气息,但平时教学时,我们只注重数学的知识性、应用性,忽略了其文化内涵,为此,本文在建构主义认知理论的指导下,具体结合教学案例,在数学课堂中渗透数学文化,激发学生对数学的兴趣,完成知识的意义建构,最终达到提高数学能力的目的。  【关键词】教学文化;课堂渗透
【正】山东德州地区工商银行,在德州市实现了会计对公业务的联网核算,采用了计算机密码印鉴系统,用密码验证代替了核对印鉴,保证了企业资金的安全。从而使全市四个办事处的所
【正】5月24日,金融早报办事处(记者站筹),邀请乌鲁木齐地区各商业银行办公室主任、及有关部门领导在人民银行新疆分行六楼会议室,就《金融早报》在乌建立办事机构及组稿工作进
叶澜教授向我们描绘的充满生命力的课堂一直让我心动. 在实践中,我认真学习新课程,用新课程理念指导自己的教学,一切以学生的发展为本,积极营造开放的课堂氛围. 课堂上我满心欢喜地与学生进行思维碰撞、情感的交流,学生们学得积极而投入,可在批改作业时却发现学生的正确率较以前大大降低了. 这是什么原因呢?这批学生数学素质很高啊,不应该会出现这种情况,难道是新课程理念指导下的开放课堂惹的祸?还是……我苦苦思索