最近要做一个电子书,利用的是FlashPaper将Word文件转换为SWF格式文件,因为需要在光盘上自动运行,所以在网上寻找Swf 转 Exe文件的工具,找到JerkFlashV2,试了一下,才发现该工具转换成的EXE文件是基于Flash Player 6.0的,有许多Flash Palery的新功能无法使用,找了一下其它的工具,均为基于6.0版本的,无奈,只好动手自己编写一个。:)

点此下载EXE文件

参照《FLASH工具的秘密》所说的方法,用VB6编写了一个,改掉了该方法中处理速度慢的问题,并能够在没有COMDLG32.OCX(该控件为VS6中用来显示各种对话框的,如打开文件、保存文件、显示打印机设置等)的计算机上运行。工作摘要如下:

1、准备最新版本的Flash Player,我用的是8.0(文件名为SAFlashPlayer.exe),9.0的我还没用到

2、用VB6新建一个EXE项目,将SAFlashPlayer.exe添加为该工程的资源文件,在此,我使用了其默认属性:
类型:CUSTOM
编号:101
语言:中文(中国)

3、新建一窗体,如下所示:

3、该窗体代码如下,基本上类似于《FLASH工具的秘密——SWF2EXE》一文所说,但作了一些改动,并优化了一些部分:
Private Sub Command1_Click()
Dim strFile As String
strFile = ShowOpenFileDialog(Me, "动画文件(*.swf)|*.swf|所有文件(*.*)|*.*", "")
If strFile <> "" Then
Text1.Text = strFile
End If
End Sub

Private Sub Command2_Click()
If Trim(Text1.Text) <> "" Then Text2.Text = Left(Text1.Text, InStr(1, Text1.Text, ".")) & "exe"

Dim strFile As String
strFile = ShowSaveFileDialog(Me, "EXE文件(*.exe)|*.exe", "")
If strFile <> "" Then
Text2.Text = strFile
End If

End Sub

Private Sub Command3_Click()
'暂时Disable掉按钮
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False

Dim exetog As Long '定义EXE形式标识符
Dim filelong As Long
Dim copy() As Byte
copy = LoadResData(101, "CUSTOM") '将资源文件存放在copy()中
Open Text1.Text For Binary As #1 '打开待转换的SWF文件
Open Text2.Text For Binary As #2 '创建将生成的EXE文件
'将播放器以二进制形式写入到中的内容写入文件2中
Put #2, , copy
'将SWF文件写入到文件2中
filelong = LOF(1)
ReDim copy(filelong - 1) As Byte
Get #1, , copy
Put #2, , copy
'写入EXE形式文件标识符
filelong = LOF(2)
exetog = 1193046 '1193046是EXE形式的标识符(56 34 12 FA)中的前三个字节56 34 12的十进制值
Put #2, , exetog
Seek #2, filelong + 4 '调整文件指针到filelong+4字节处
exetog = 250 '250是EXE形式的标识符的最后一个字节FA的十进制值
Put #2, , exetog
Seek #2, filelong + 5 '调整文件指针到filelong+5字节处
'写入SWF文件长度
filelong = LOF(1)
Put #2, , filelong
Close #1
Close #2
MsgBox "转换完毕!"
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
End Sub

另外,为了能够在没有COMDLG32.OCX的计算机上运行,该程序没有使用CommonDialog控件,而采用API方式,为此建立了一个模块General,内容如下:Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_EXPLORER = &H80000
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHAREWARN = 0
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHOWHELP = &H10
Public Const OFS_MAXPATHNAME = 256

Public Const LF_FACESIZE = 32

'OFS_FILE_OPEN_FLAGS and OFS_FILE_SAVE_FLAGS below
'are mine to save long statements; they're not
'a standard Win32 type.
Public Const OFS_FILE_OPEN_FLAGS = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_CREATEPROMPT Or OFN_NODEREFERENCELINKS Or OFN_HIDEREADONLY Or OFN_ALLOWMULTISELECT
Public Const OFS_FILE_SAVE_FLAGS = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_OVERWRITEPROMPT Or OFN_HIDEREADONLY

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _
"GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Public Function ShowOpenFileDialog(Form As Form, Filter As String, Optional OldFileName As String = "") As String
Dim ofn As OPENFILENAME
Dim rtn As Long

ofn.hwndOwner = Form.hWnd
ofn.hInstance = App.hInstance
ofn.lpstrFilter = Replace(Filter, "|", Chr(0))
ofn.lpstrFile = Space(2047)
ofn.nMaxFile = Len(ofn.lpstrFile) + 1
ofn.lpstrFileTitle = Space(510)
ofn.nMaxFileTitle = Len(ofn.lpstrFileTitle) + 1
ofn.lpstrInitialDir = App.Path
ofn.lpstrTitle = "打开文件"
ofn.flags = OFS_FILE_OPEN_FLAGS
ofn.lStructSize = Len(ofn)
rtn = GetOpenFileName(ofn)

If rtn >= 1 Then
Dim il As Integer
il = InStr(1, ofn.lpstrFile, Chr(0))
If il <= 0 Then il = Len(ofn.lpstrFile)

ShowOpenFileDialog = Left(ofn.lpstrFile, il)
Else
ShowOpenFileDialog = OldFileName
End If
End Function

Public Function ShowSaveFileDialog(Form As Form, Filter As String, Optional OldFileName As String = "") As String
Dim ofn As OPENFILENAME
Dim rtn As Long

ofn.hwndOwner = Form.hWnd
ofn.hInstance = App.hInstance
ofn.lpstrFilter = Replace(Filter, "|", Chr(0))
ofn.lpstrFile = Space(2047)
ofn.nMaxFile = Len(ofn.lpstrFile) + 1
ofn.lpstrFileTitle = Space(510)
ofn.nMaxFileTitle = Len(ofn.lpstrFileTitle) + 1
ofn.lpstrInitialDir = App.Path
ofn.lpstrTitle = "打开文件"
ofn.lpstrDefExt = ""
ofn.flags = OFS_FILE_SAVE_FLAGS
ofn.lStructSize = Len(ofn)
rtn = GetSaveFileName(ofn)

If rtn >= 1 Then
Dim il As Integer
il = InStr(1, ofn.lpstrFile, Chr(0))
If il <= 0 Then il = Len(ofn.lpstrFile)

ShowSaveFileDialog = Left(ofn.lpstrFile, il)
Else
ShowSaveFileDialog = OldFileName
End If
End Function

经测试运行,该程序可以很好的进行Swf到Exe的转换,支持较高版本的的Swf文件,并且比《FLASH工具的秘密——SWF2EXE》一文中所编译的程序要快几十倍,算是一个比较好用的小工具。(自卖自夸,大家勿怪噢。

SWF to EXE 工具制作相关推荐

  1. 制作简单的java应用程序_使用exe4j工具制作简单的java应用程序

    首先需要下载exe4j工具并进行安装,下面是利用exe4j工具制作应用程序的步骤. 1.首先将工程导出为可运行的jar包,选择extract required libralies into gener ...

  2. u大师制作linux启动盘制作工具,如何用u大师u盘启动盘制作工具制作启动u盘

    如何用u大师u盘启动盘制作工具制作启动u盘?想要用u盘装系统的前提是要将u盘制作成启动u盘,那么今天小编要跟大家分享的就是制作启动u盘的操作方法,具体的操作方法是什么呢?接下来小编就跟大家讲讲如何用u ...

  3. 系统奔溃了别慌,尝试 DISM.exe 工具修复

    要说操作系统的备份和恢复功能,如果大家一路从WinXP走来,那么Ghost是比较合适的备份和恢复方案,但在Win10下它被弱化了许多.原因?微软给Win10添加的功能对我们来说已经非常强大了. 不过有 ...

  4. 【Unity Editor工具制作-文本转UTF-8编码、用WPS表格打开表格、用WPS表格打开】

    Unity Editor工具制作 文本转UTF-8编码 用NotePad打开 用WPS表格打开 文本转UTF-8编码 [MenuItem("Assets/文本转UTF-8编码")] ...

  5. 【ireport工具制作报表使用流程】

    [ireport工具制作报表使用流程] 1.ireport使用说明 2.安装包及相关环境下载 3.快速入门上手 如何使用代码生成报表 1.ireport使用说明 ireport 是一款方便实用的报表编 ...

  6. 使用Windows To Go工具制作你的U盘系统【含下载Windows10系统镜像】亲测已成功23.06.21

    WinToGo是一款辅助工具:专为能够让你将系统装进U盘,移动硬盘里,让你在任意电脑都能运行U盘里装的系统! 一.下载,安装"Windows To Go"工具 1.下载Window ...

  7. 在 Linux 里实现 FriendlayARM 提供的 SD-Flasher.exe工具的功能

    SD-Flasher.exe用于制作 Tiny210 的SD启动盘, 厂家提供的这个工具是基于 Windows , 实际上,也可以使用 Linux 命令进行基于磁盘的烧写,实现启动盘的制作. 具体步骤 ...

  8. 【在 Linux 里实现 FriendlayARM 提供的 SD-Flasher.exe工具的功能】转摘

    [转载] 在 Linux 里实现 FriendlayARM 提供的 SD-Flasher.exe工具的功能 原文地址 SD-Flasher.exe用于制作 Tiny210 的SD启动盘, 厂家提供的这 ...

  9. 基于javaGUI的文档识别工具制作

    基于javaGUI的文档识别工具制作 对于某些文本,其中富含了一些标志,需要去排除,以及去获得段落字数,以下是我个人写的一个比较简单的文档识别工具,含导入文件.导出文件以及一个简单的识别功能. 1.功 ...

最新文章

  1. 如何用fiddler抓取HTTPS的详细教程(附fiddler安装教学)
  2. WebLogic RCE(CVE-2019-2725)漏洞之旅
  3. 全文索引的使用(MySQL)
  4. Qt学习笔记-----Graphics_View_Framework
  5. Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题
  6. 蓝牙扫描过程解析_智慧定位系统之蓝牙网关在室内定位技术的原理浅析-新导智能...
  7. 如何解决android studio的模拟器有密码的问题
  8. 【前端 · 面试 】HTTP 总结(二)—— HTTP 消息
  9. k均值聚类的python代码_k-均值聚类Python代码实现
  10. MySql Windws 下自动备份脚本
  11. csgo服务器与客户端文件不匹配,csgo客户端文件与服务器不匹配怎么办
  12. PostgreSQL 10.1 手册
  13. android输入法剪切板历史记录,Android Q 获取剪切板内容
  14. 依赖注入:语法糖胜于功能组合
  15. 关于时间的SQL条件查询
  16. 用Python写一个最简单的计时秒表
  17. Python爬虫_线程池实例——北京新发地菜价
  18. 国产浏览器 html5,老外评测国产浏览器 HTML5性能不俗
  19. Linux中常见文件类型及文件系统类型
  20. dockermount与volume的区别

热门文章

  1. 女朋友让你帮他破解邻居家的wifi?看完这篇文章你就会了
  2. JetBrains 如何看待自己的软件在中国被频繁破解?
  3. 沁园春.长沙HTML风格化制作简单代码
  4. codevs 2830 蓬莱山辉夜
  5. 邻家汇:广告+精准营销助商超转型升级
  6. 手动去除有道词典7.0Beta版底部广告栏
  7. 教育源代码,培训教育源码,万岳教育直播平台源码校园版
  8. 导出数据到Excel
  9. 激活 ActiveX 控件
  10. (读书笔记)《玩着玩着就能成为PPT高手》——说的漂亮