• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB將OCX植入執行文件內

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 28次 | 進入軟件測試論壇討論

    領測軟件測試網 在用VB編程中合理的使用第三方控件,往往能夠事半功倍。但是使用第三方控件也有不好的地方,那就是為了保證程序正常運行,必須使程序能夠在系統目錄或程序目錄下找到所用的第三方控件。要做到這一點通常有兩種辦法:一是把控件和程序制成一個壓縮包發行,這樣的缺點是有可能導致在程序傳播過程中丟失控件文件。二是制作安裝程序,缺點是制作過程煩瑣。而且上面兩種辦法也不符合綠色軟件的要求。所謂的綠色軟件是指軟件只有單個可執行文件且無須安裝,目前很受用戶歡迎。那么有沒有辦法在使用了第三方控件的情況下實現綠色軟件夢呢?答案是有。

      做法是,將第三方控件以自定義資源文件方式保存在程序中,程序運行之后使用控件之前將所用到的控件生成到該程序目錄下,完成控件從可執行文件中的金蟬脫殼。

      具體做法如下:

      第一步:將要用到的控件拷貝到當前工程目錄下,右鍵單擊該控件,選擇屬性,記下文件大小。注意,應記下以字節為單位的具體數字,而不是多少K,以備編程使用。

      第二步:引用并正常使用該控件。

      第三步:新建資源文件加入工程,在資源文件編輯器中添加所使用的第三方控件為自定義資源(CUSTOM),資源號使用默認的101。如果使用了多個控件則分別添加到資源文件的101、102......資源項中,脫殼代碼也要作相應的修改。

      第四步:編寫控件脫殼代碼,使其讀取資源文件的數據,在程序當前目錄下生成控件。

      代碼如下:

    Private Const OCXSIZE = 57344 '欲生成的控件大小是57344Byte,名字為CoolToolBar.ocx

    Sub Main()
     Dim Ocx() As Byte 'OCX是個Btye類型的數組
     Dim Counter As Long
     Ocx = LoadResData(101, "CUSTOM") '將自定義資源中101號資源讀入數組OCX
     '注意,微軟的幫助中對加載自定義資源的說明有錯誤,自定義資源標識為"CUSTOM"而不是幫助所說的數字10

     If Right(App.Path, 1) = "($%$43%^#ASD#2@$#f$%^) Then '讀取程序所在路徑,判斷是否為根目錄并分別處理
      '程序在根目錄下
      If Dir(App.Path & "CoolToolBar.ocx") = "" Then '程序路徑下有無控件,無則生成控件
       '以二進制方式寫(生成)控件(CoolToolBar.ocx)到主程序所在的目錄
       Open App.Path & "CoolToolBar.ocx" For Binary As #1
       For Counter = 0 To OCXSIZE - 1 '注意因為從0 Byte開始因此以文件大小 - 1Byte 為終值
        Put #1, , Ocx(Counter)
       Next Counter
       Close #1
      End if
     Else
      '程序不在根目錄下
      If Dir(App.Path & "\CoolToolBar.ocx") = "" Then '程序路徑下有無控件,無則生成控件
       '以二進制方式寫(生成)控件(CoolToolBar.ocx)到主程序所在的目錄
       Open App.Path & "\CoolToolBar.ocx" For Binary As #1
       For Counter = 0 To OCXSIZE - 1 '注意因為從0 Byte開始因此以文件大小 - 1Byte 為終值
        Put #1, , Ocx(Counter)
       Next Counter
       Close #1
      End if
     End if
     Form1.Visible = True '主程序所用控件已經生成,顯示主窗體,進入主程序。
    End Sub  

      注意:將以上代碼作為一個模塊添加到工程中,并在工程-工程屬性設置中將啟動對象選為Sub Main,即上面的脫殼代碼。然后編譯生成EXE文件,將該EXE文件拷貝到其他沒有安裝所用控件的計算機上運行一下看看是否實現了控件攜帶之金蟬脫殼。如果是那么OK!以上為使用一個控件的情況,使用多個控件方法基本相同,不在贅述。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>