明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

從程序中生成exe文件

[摘要]這篇文章要討論的是在一個(gè)VB程序中如何產(chǎn)生出另一個(gè)Exe文件。要實(shí)現(xiàn)這個(gè)目的,必須符合以下幾個(gè)條件:     第一、編寫(xiě)這樣的程序時(shí),具備欲生成的Exe文件     第二、事先知道欲生成的Exe文件...
這篇文章要討論的是在一個(gè)VB程序中如何產(chǎn)生出另一個(gè)Exe文件。要實(shí)現(xiàn)這個(gè)目的,必須符合以下幾個(gè)條件:

    第一、編寫(xiě)這樣的程序時(shí),具備欲生成的Exe文件
    第二、事先知道欲生成的Exe文件大小

  其實(shí)這兩個(gè)條件可以說(shuō)不是條件,但確實(shí)很重要。為了敘說(shuō)方便,將發(fā)行的程序稱作APP-1.Exe,要生成的文件叫APP-2.Exe,以下是具體步驟:

    第一步,準(zhǔn)備好APP-2.Exe,這里我使用VB寫(xiě)了一個(gè)什么都不做程序,編譯成APP-2.Exe。
    第二步,右鍵單擊單擊APP-2.Exe,選擇屬性,記下文件大小。注意,應(yīng)記下以字節(jié)為單位的具體數(shù)字,而不是多少k。

    這樣就具備了前邊說(shuō)的兩個(gè)條件。

    第三步,新建工程APP1,新建資源文件加入工程,在資源文件編輯器中添加自定義資源(CUSTOM),資源號(hào)使用默認(rèn)的101。值得注意的是,每個(gè)資源號(hào)對(duì)應(yīng)的資源項(xiàng)對(duì)資源大小的要求是有限制的,我記得時(shí)64K,因此如果APP-2.Exe的大小如果大于這個(gè)數(shù)的話,就要麻煩一些。如果是這樣,我們的寫(xiě)另一個(gè)程序,把APP-2.Exe一個(gè)字節(jié)一個(gè)字節(jié)的讀出來(lái),每64K生成一個(gè)文件,然后再把這些文件分別寫(xiě)道資源文件的101、102......資源項(xiàng)中,代碼也要作相應(yīng)的修改。

    第四步,為APP-1.Exe編寫(xiě)代碼,使其讀取資源文件的數(shù)據(jù),生成APP-1.Exe。

  代碼如下:

  Private Const FILESIZEOFAPP2 = 20480  '我生成的APP-2.Exe大小是20480Byte
  Private Sub cmdOK_Click()  '單擊按鈕cmdOK運(yùn)行代碼
    Dim APP2() As Byte  'APP2是個(gè)Btye類型和數(shù)組
    Dim Counter As Long
    APP2 = LoadResData(101, "CUSTOM")  '將自定義資源中101號(hào)資源讀入數(shù)組
    '注意,微軟的幫助中對(duì)加載定義資源的說(shuō)明有誤,硬是資源標(biāo)識(shí)為"CUSTOM"而非數(shù)字
    If Dir(App.Path & "APP-2.Exe") <> "" Then  '第一次按cmdOK有效
      MsgBox App.Path & "APP-2.Exe 已經(jīng)存在!"
      Exit Sub
    End If
    Open App.Path & "APP-2.exe" For Binary As #1  '以二進(jìn)制方式寫(xiě)(生成)APP-2.Exe到APP-1.Exe所在的目錄
      For Counter = 0 To FILESIZEOFAPP2 - 1  '注意因?yàn)閺? Byte開(kāi)始因此以文件大小 - 1Byte 為終
        Put #1, , APP2(Counter)
      Next Counter
    Close #1
    Shell App.Path & "APP-2.Exe", vbNormalFocus 注釋:運(yùn)行剛生成的APP-2.Exe
    Unload Me
  End Sub


標(biāo)簽:從程序中生成exe文件