VB將OCX植入執行檔案內

2021-04-02 22:46:21 字數 1623 閱讀 1992

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

做法是,將第三方控制項以自定義資源檔案方式儲存在程式中,程式執行之後使用控制項之前將所用到的控制項生成到該程式目錄下,完成控制項從可執行檔案中的金蟬脫殼。

具體做法如下:

第一步:將要用到的控制項拷貝到當前工程目錄下,右鍵單擊該控制項,選擇屬性,記下檔案大小。注意,應記下以位元組為單位的具體數字,而不是多少k,以備程式設計使用。

第二步:引用並正常使用該控制項。

第三步:新建資源檔案加入工程,在資源檔案編輯器中新增所使用的第三方控制項為自定義資源(custom),資源號使用預設的101。如果使用了多個控制項則分別新增到資源檔案的101、102......資源項中,脫殼**也要作相應的修改。

第四步:編寫控制項脫殼**,使其讀取資源檔案的資料,在程式當前目錄下生成控制項。

**如下:

private const ocxsize = 57344 '欲生成的控制項大小是57344byte,名字為cool*******.ocx

sub main()

dim ocx() as byte 'ocx是個btye型別的陣列

dim counter as long

ocx = loadresdata(101, "custom") '將自定義資源中101號資源讀入陣列ocx

'注意,微軟的幫助中對載入自定義資源的說明有錯誤,自定義資源標識為"custom"而不是幫助所說的數字10

'程式在根目錄下

'以二進位制方式寫(生成)控制項(cool*******.ocx)到主程式所在的目錄

for counter = 0 to ocxsize - 1 '注意因為從0 byte開始因此以檔案大小 - 1byte 為終值

put #1, , ocx(counter)

next counter

close #1

end if

else

'程式不在根目錄下

'以二進位制方式寫(生成)控制項(cool*******.ocx)到主程式所在的目錄

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!以上為使用乙個控制項的情況,使用多個控制項方法基本相同,不在贅述。

將python檔案打包成exe可執行檔案

目前有好幾種方法可以將python檔案打包成exe應用程式檔案,例如py2exe,pyinstaller等,比較下來,還是覺得pyinstaller使用起來比較簡單。如果已經安裝過python3的使用者比較方便,可以使用python3檔案下的scripts檔案中的pip安裝,python2好像沒有,...

將py檔案打包成exe可執行檔案

將python 打包成exe可執行檔案 日常生活中,我們可以很輕鬆的實現,運用程式設計 實現我們想要實現的各種功能,解決各種問題,但是如果要將我們編寫好的 給別人使用,如果要他們直接使用我們的 就需要安裝各種編譯軟體 以及第三方模組,還要對軟體操作,程式設計有一定的了解,這對使用者的要求比較高,不是...

將python檔案打包成exe可執行檔案

作業系統 win8 64位 python版本 3.5 pywin32版本 pywin32 219.win amd64 py3.5 打包步驟 1 安裝pywin32 2 解壓縮pyinstaller的zip包到任何目錄,我的解壓目錄是 c program files python35 pyinstal...