程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi轉換Flash的SWF格式為EXE格式

Delphi轉換Flash的SWF格式為EXE格式

編輯:Delphi

將Flash導出的SWF文件轉換成EXE格式,轉換後播放動畫可不依賴Flashplayer,這是用Delphi代碼寫的轉換程序主文件代碼,實現思路大致是:首先,將Flash Player文件讀入內存,然後新建一個空的EXE文件,保存在同SWF文件想同的路徑中,此時將要轉換的SWF文件讀入內存,准備工作已經完成,現在將Player文件內容先寫入EXE文件中,然後再將SWF文件內容追加到EXE文件中去,大部分工作已經完成,現在剩下將文件大小及相關標志寫入到文件尾中,將SWF文件大小寫入EXE文件中,釋放資源,完成轉換工作,並在最後彈出一個小窗口告之用戶。

vIEw source print? 01 unit Unit1; 02 //swf轉換EXE的文件轉換類 03 interface 04 uses 05   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 06   Dialogs, StdCtrls, ExtCtrls; 07 type 08   TForm1 = class(TForm) 09     Label1: TLabel; 10     Edit1: TEdit; 11     Button1: TButton; 12     Button2: TButton; 13     Bevel1: TBevel; 14     Button3: TButton; 15     OpenDialog1: TOpenDialog; 16     procedure Button1Click(Sender: TObject); 17     procedure Button2Click(Sender: TObject); 18     procedure Button3Click(Sender: TObject); 19   private 20     { Private declarations } 21   public 22     { Public declarations } 23   end; 24 var 25   Form1: TForm1; 26 implementation 27 {$R *.dfm} 28 procedure TForm1.Button1Click(Sender: TObject); 29 begin 30   OpenDialog1.Title := '選擇SWF文件'; 31   OpenDialog1.Filter := 'SWF文件|*.swf'; 32   if OpenDialog1.Execute then 33     Edit1.Text :=  OpenDialog1.FileName; 34 end; 35 procedure TForm1.Button2Click(Sender: TObject); 36 var 37   PlayerFile, swfFile: TMemoryStream; 38   ExeFile: TFileStream; 39   AppPath: String; 40   ExeFileName: String; 41   nInt, nFileSize: Integer; 42   FVersion: Array [0..2of byte; 43 begin 44   // 獲取該轉換程序所在路徑 45   AppPath := ExtractFilePath(ParamStr(0)); 46   if AppPath[Length(AppPath)] <> '\' then AppPath := AppPath + '\'; 47     // 首先,將Flash Player文件讀入內存 48   PlayerFile := TMemoryStream.Create; // 創建PlayerFile對象 49   PlayerFile.LoadFromFile(AppPath + 'Player.exe'); // 讀入內存 50   // 然後新建一個空的EXE文件,保存在同SWF文件想同的路徑中 51   ExeFileName := ChangeFileExt(Edit1.Text, '.exe'); // 將擴展名改為EXE即獲得EXE文件路徑 52   ExeFile := TFileStream.Create(ExeFileName + '.exe', fmCreate or fmOpenWrite); 53   // 此時將要轉換的SWF文件讀入內存 54   swfFile := TMemoryStream.Create; // 創建swfFile對象 55   swfFile.LoadFromFile(Edit1.Text); // 讀入內存 56   // 准備工作已經完成,現在將Player文件內容先寫入EXE文件中 57   ExeFile.CopyFrom(PlayerFile, 0); 58   // 然後再將SWF文件內容追加到EXE文件中去 59   ExeFile.CopyFrom(swfFile, 0); 60   // 大部分工作已經完成,現在剩下將文件大小及相關標志寫入到文件尾中 61   // 設置版本號 62   FVersion[0] := $56; 63   FVersion[1] := $34; 64   FVersion[2] := $12; 65   ExeFile.Write(FVersion, sizeof(FVersion)); //將版本號寫入EXE文件中 66   nInt:=$FA// 設置標志 67   ExeFile.Write(nInt, 1); // 將標志寫入EXE文件中 68   nFileSize := swfFile.Size; // SWF文件大小 69   ExeFile.Write(nFileSize, 4); // 將SWF文件大小寫入EXE文件中 70   // 釋放資源,完成轉換工作 71   ExeFile.Free; 72   swfFile.Free; 73   PlayerFile.Free; 74   ShowMessage('文件已經轉換完畢!'); 75 end; 76 procedure TForm1.Button3Click(Sender: TObject); 77 begin 78   Close; 79 end; 80 end.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved