快讯

从问题到结果 ――EXE2SWF的开发手记

2004-02-14 09:34  出处:电脑爱好者  作者:Daffodil  责任编辑:zwg 

btnOpen是用来打开硬盘上EXE形式的Flash文件的,双击之,添加如下的代码: procedure TForm1.btnOpenClick(Sender: TObject); begin // 通过OpenDialog让用户选择EXE形式的Flash if OpenDialog.Execute then begin edtSourceExe.Text := OpenDialog.FileName; // 自动生成.swf格式的文件名,方便用户 edtTargetSwf.Text := ChangeFileExt(edtSourceExe.Text, '.swf'); end; end; btnConvert是用来转换文件格式的按钮,双击之,添加如下代码: procedure TForm1.btnConvertClick(Sender: TObject); var // 分别处理EXE、SWF文件的文件流 SourceStream, DestinyStream: TFileStream; // SWF文件的大小 SwfFileSize: Cardinal; begin // 打开EXE形式的源文件 SourceStream := TFileStream.Create(edtSourceExe.Text, fmOpenRead or fmShareExclusive); try // 读取文件标志 SourceStream.Seek(- 2 * sizeof(integer), soFromEnd); SourceStream.ReadBuffer(SwfFileSize, sizeof(integer)); // 判断读到的文件标志是否和FA123456相同 // 借此判断是否是Macromedia官方格式的Flash文件 if SwfFileSize = $FA123456 then begin // 读取SWF文件的大小 SourceStream.ReadBuffer(SwfFileSize, sizeof(SwfFileSize)); SourceStream.Seek(- SwfFileSize - 2 * sizeof(integer), soFromEnd); // 打开目标SWF文件 DestinyStream := TFileStream.Create(edtTargetSwf.Text, fmCreate); try // 从EXE文件流中读取数据 DestinyStream.CopyFrom(SourceStream, SwfFileSize); ShowMessage('File has been converted successfully!'); finally // OK,释放文件流 DestinyStream.Free; end; end else ShowMessage('Unknown type of executable flash file!'); finally // OK,释放文件流 SourceStream.Free; end; end;   程序比较简单,参考代码中的注释,相信程序很好理解。现在按下F9运行,打开一个EXE形式的Flash文件,按下Convert键,相应的SWF形式的Flash便生成了,我们的目的也就达到了。原理分析清楚了,再做一个SWF2EXE也是很简单的事情,只需要在文件头部依次追加Macromedia Flash 5中的Standalone Player、SWF文件、FA123456标志以及SWF文件长度即可。
键盘也能翻页,试试“← →”键
IT热词搜索 来源:360新闻
软件论坛帖子排行
相关文章

相关软件:

腾讯QQ2012
大小:52.93 MB 授权:免费
腾讯QQ2012
立即下载
腾讯QQ2013
大小:49.32 MB 授权:免费
腾讯QQ2013
立即下载