如今不少Flash檔案都是以exe格式發布的,其原理是將Flash Player和swf格式的Flash檔案封裝在一起,在沒有安裝Flash Player的電腦上一樣可以播放。有時候我們可能需要swf格式的Flash檔案,本轉換器的功能就是將exe格式的Flash轉換成swf格式。
程式:http://dl.dbank.com/c0wqcxuatd
使用Flash Player 6.0 r4版播放器的檔案刪去前424961個位元組
使用Flash Player 7.0 r14版播放器的檔案刪去987137個位元組
使用Flash Player 8.0 r22版播放器的檔案1581057個位元組
使用Flash Player 9.0 r45版播放器的檔案2447561個位元組
使用Flash Player 9.0 r115版播放器的檔案3391489個位元組
更新:
1.統一控制項名和變數名為英語
2.介面微調
3.增加進度條
4.使用了自訂過程,大幅度精簡了代碼
5.加入了錯誤處理模組
歡迎致信wangjingkaibear@live.cn交流
基於Visual Basic 2010製作,以下為主介面原始碼:
Imports SystemImports System.IOPublic Class exe2swf Dim FPV1 As Integer '定義一個變數用於儲存Flash Player的版本 Private Sub ZH1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConvert1.Click Dim TargetFile1 As String If TargetFilePath1.Text = "" Then '當目標檔案路徑未填寫時 TargetFile1 = Mid(SourceFilePath1.Text, 1, SourceFilePath1.Text.Length - 3) & "swf" '產生預設路徑,即與源檔案相同 Else TargetFile1 = TargetFilePath1.Text '否則則使用已填寫的目標檔案路徑 End If If File.Exists(SourceFilePath1.Text) = False Then '判斷源檔案是否存在 MsgBox("無法開啟檔案,可能源檔案路徑錯誤或不存在!", MsgBoxStyle.OkOnly, "開啟檔案錯誤") Else Try Select Case FPV1 '使用Select函數分開處理不同版本的檔案 Case 1 '使用Flash Player 6.0 r4版播放器的檔案處理方法 Convert1(424961, TargetFile1) Case 2 '使用Flash Player 7.0 r14版播放器的檔案處理方法 Convert1(987137, TargetFile1) Case 3 '使用Flash Player 8.0 r22版播放器的檔案處理方法 Convert1(1581057, TargetFile1) Case 4 '使用Flash Player 9.0 r45版播放器的檔案處理方法 Convert1(2447561, TargetFile1) Case 5 '使用Flash Player 9.0 r115版播放器的檔案處理方法 Convert1(3391489, TargetFile1) End Select Catch ex As Exception Select Case Err.Number Case 53 MsgBox("未找到檔案", , "錯誤") Case 321 MsgBox("檔案格式無效", , "錯誤") Case 75 MsgBox("路徑/檔案訪問錯誤", , "錯誤") Case 71 MsgBox("磁碟未準備好", , "錯誤") Case 61 MsgBox("磁碟空間不足", , "錯誤") Case 51 MsgBox("內部錯誤", , "錯誤") Case Else MsgBox("未知錯誤", , "錯誤") End Select ConvertProgress1.Value = 0 Exit Sub End Try MsgBox(SourceFilePath1.Text & " 已經轉換成功,並儲存為 " & TargetFile1 & "!", MsgBoxStyle.OkOnly, "轉換成功") '以下If程式碼片段用於在“轉換完成後開啟”選項勾選的情況下,開啟生產的檔案。 Try If OpenFinish1.Checked = True Then Process.Start(TargetFile1, -0) End If Catch ex As Exception MsgBox("開啟檔案時發生錯誤!", MsgBoxStyle.Exclamation, "錯誤") End Try End If ConvertProgress1.Value = 0 SourceFilePath1.Text = "" '清除文字框 TargetFilePath1.Text = "" '清除文字框 BtnConvert1.Enabled = False '禁用“轉換”按鈕 OpenFinish1.Checked = False '取消選擇“轉換完成後開啟”選項 OpenFinish1.Enabled = False '令“轉換完成後開啟”選項不可用 DlgOpenFile1.FileName = "" End Sub Private Sub LL1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBroswer1.Click DlgOpenFile1.ShowDialog() '顯示開啟檔案對話方塊 SourceFilePath1.Text = DlgOpenFile1.FileName '將開啟的檔案的路徑在源檔案路徑文字框中顯示出來 End Sub Private Sub LL2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBroswer2.Click DlgSaveFile1.ShowDialog() '顯示儲存檔案對話方塊 TargetFilePath1.Text = DlgSaveFile1.FileName '將目標檔案的路徑在目標檔案路徑文字框中顯示出來 End Sub Private Sub YWenJianLJ1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SourceFilePath1.TextChanged If SourceFilePath1.Text = "" Then '如果“源檔案路徑”文字框為空白,則三個選項按鈕為未選狀態且不可用 FP6.Checked = False FP7.Checked = False FP8.Checked = False FP91.Checked = False FP92.Checked = False FP6.Enabled = False FP7.Enabled = False FP8.Enabled = False FP91.Enabled = False FP92.Enabled = False Else '如果“源檔案路徑”文字框有內容,則三個選項按鈕可用 FP6.Enabled = True FP7.Enabled = True FP8.Enabled = True FP91.Enabled = True FP92.Enabled = True End If End Sub Private Sub FP6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FP6.CheckedChanged If FP6.Checked = True Then BtnConvert1.Enabled = True FPV1 = 1 OpenFinish1.Enabled = True End If End Sub Private Sub FP7_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FP7.CheckedChanged If FP7.Checked = True Then BtnConvert1.Enabled = True FPV1 = 2 OpenFinish1.Enabled = True End If End Sub Private Sub FP8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FP8.CheckedChanged If FP8.Checked = True Then '如果“Flash Player 8選項按鈕”選擇 BtnConvert1.Enabled = True '“轉換”按鈕可用 FPV1 = 3 '將值“3”賦給“Flash Player版本”變數 OpenFinish1.Enabled = True '“完成後開啟”複選按鈕可用 End If End Sub Private Sub FP91_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FP91.CheckedChanged If FP91.Checked = True Then BtnConvert1.Enabled = True FPV1 = 4 OpenFinish1.Enabled = True End If End Sub Private Sub FP92_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FP92.CheckedChanged If FP92.Checked = True Then BtnConvert1.Enabled = True FPV1 = 5 OpenFinish1.Enabled = True End If End Sub Private Sub About1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles About1.Click About.Show() End Sub Private Sub Help1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Help1.Click Help.Show() End Sub Sub Convert1(Amount1, TargetFilename1) Dim wjsj() As Byte FileOpen(1, SourceFilePath1.Text, OpenMode.Binary) '開啟源檔案 ConvertProgress1.Value = 10 ReDim wjsj(LOF(1) - Amount1) '讀取源檔案 ConvertProgress1.Value = 30 FileGet(1, wjsj, Amount1) ConvertProgress1.Value = 60 FileClose(1) ConvertProgress1.Value = 65 FileOpen(1, TargetFilename1, OpenMode.Binary) '開啟目標檔案 ConvertProgress1.Value = 75 FilePut(1, wjsj, -1) '寫入目標檔案 ConvertProgress1.Value = 90 FileClose(1) ConvertProgress1.Value = 100 End SubEnd Class