偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

VB.NET嵌入文件操作技巧分享

開(kāi)發(fā) 后端
VB.NET嵌入文件的應(yīng)用在實(shí)際代碼編寫(xiě)中是非常常見(jiàn)的一個(gè)操作。不過(guò)對(duì)初學(xué)者來(lái)說(shuō)還是有些難以掌握的。下面我們就為大家詳細(xì)介紹下其中概念,方便大家理解。

VB.NET嵌入文件的應(yīng)用方式有很多種。大家可以根據(jù)開(kāi)發(fā)中的不同需求來(lái)進(jìn)行選擇應(yīng)用。下面我們就會(huì)對(duì)這一應(yīng)用方式進(jìn)行一個(gè)詳細(xì)的解讀,方便大家理解,提高大家的編程效率。#t#

在文件中嵌入文件,一般都是通過(guò)資源文件來(lái)實(shí)現(xiàn)的,至于具體的實(shí)現(xiàn)步驟,我想就不用我羅嗦了,網(wǎng)上有很多這樣的文章,不清楚的朋友可以自己搜索一下。但是有些情況下,用資源文件無(wú)法解決問(wèn)題,就不得不迂回一下,比如要實(shí)現(xiàn)所謂的綠色軟件(在這里我要說(shuō)明的是,這篇文章沒(méi)有涉及任何高級(jí)技巧,因此,您略過(guò)不看,我也不會(huì)感到難過(guò)),事實(shí)上,大家知道,VB程序的運(yùn)行需要VB運(yùn)行庫(kù)的支持,所以,用VB做綠色軟件幾乎是不可能的事。

幸運(yùn)的是,某些版本的window預(yù)裝了VB的運(yùn)行庫(kù)支持文件,為不可能變?yōu)榭赡埽峁┝藱C(jī)會(huì)。然而,一旦我們使用了第3方控件或在其他類(lèi)似情況下,這種實(shí)現(xiàn)綠色軟件的可能就微乎其微了,怎么辦?如果用資源文件就稱(chēng)不上綠色軟件了,那么,是不是就意味著我們必須放棄這種誘人的想法呢?別著急,往下看就知道應(yīng)該如何去做了。:)

我的答案是直接以代碼的形式,將VB.NET嵌入文件應(yīng)用到到我們的VB程序中,下面我假設(shè)您已經(jīng)知道了如何用api函數(shù)注冊(cè)控件(當(dāng)然在程序中調(diào)用regsvr32也可),知道了如何讀寫(xiě)文件和注冊(cè)表,這些問(wèn)題和本問(wèn)題息息相關(guān),您有必要知道,如果不知道也不要緊,可以通過(guò)搜索引擎獲取答案。

具體的實(shí)現(xiàn)步驟是:首先在程序加載時(shí)根據(jù)注冊(cè)表中的鍵值,判斷是否是第一次運(yùn)行,如果是第一次運(yùn)行,則將在您指定的路徑生成需要的文件并寫(xiě)入數(shù)據(jù),然后,調(diào)用api函數(shù)注冊(cè)控件,同時(shí),寫(xiě)注冊(cè)表,標(biāo)記已運(yùn)行過(guò)本程序。

寫(xiě)文件的大致程序如下:

  1. Dim buff() As Byte 

接下來(lái)寫(xiě)根據(jù)VB.NET嵌入文件的內(nèi)容給數(shù)組賦值的語(yǔ)句

  1. Open 文件名 For Binary As #1  
  2. Put #1, , buff  
  3. Close #1 

 

看到這里,有些朋友要被我氣樂(lè)了,會(huì)憤怒的對(duì)我說(shuō):你說(shuō)的這些我都知道,關(guān)鍵是怎么給數(shù)組賦值,難道你要我用16進(jìn)制的編輯器查看文件數(shù)據(jù),進(jìn)行賦值嗎?這時(shí),我會(huì)回答:是的,不過(guò)這個(gè)過(guò)程可以通過(guò)程序?qū)崿F(xiàn),看看下面的代碼:

 

  1. Private Sub writetext(ByVal
     FileName As String, ByVal 
    ByteArrayName As String, 
    ByVal TxtFile As String)  
  2. Dim i As Long  
  3. i = FileLen(FileName)  
  4. Dim arr() As Byte  
  5. ReDim arr(i - 1)   
  6. Open FileName For Binary As #1  
  7. Get #1, , arr  
  8. Close #1  
  9. Dim temps As String  
  10. Open TxtFile For Output As #1  
  11. Print #1, "ReDim " + 
    ByteArrayName + "(" + CStr(i - 1) + ")"  
  12. For i = 0 To UBound(arr)  
  13. temps = ByteArrayName + "
    (" + CStr(i) + ")=" + CStr(arr(i))  
  14. Print #1, temps  
  15. Next  
  16. Close #1  
  17. ''MsgBox "haha "  
  18. End Sub 

這段代碼的作用是自動(dòng)將你需要手動(dòng)輸入的代碼寫(xiě)入一個(gè)文本文件,您剩下的工作就是,調(diào)用這段代碼,手動(dòng)打開(kāi)剛剛生成的文件,把文字全部選中,復(fù)制,并粘貼到VB中您需要手動(dòng)編寫(xiě)代碼的地方。其中參數(shù)FileName為您需要嵌入的文件的文件名,ByteArrayName為您程序中用到的數(shù)組名(如果用我那段讓您生氣的代碼,您就傳入"buff"),TxtFile為要生成的文本文件的文件名。假如,您要將您磁盤(pán)上的c:test.ocx嵌入程序,您在程序中的數(shù)組名稱(chēng)為"buff",您可以這樣調(diào)用:

writetext "c:test.ocx", "buff", "d:mcmcbuff.txt",然后打開(kāi)文件d:mcmcbuff.txt,進(jìn)行,全選,復(fù)制,粘貼。

不得不說(shuō)的是,盡管您可以在程序中釋放文件,自動(dòng)注冊(cè),但是如果您用的第3方控件是您畫(huà)到窗體上的,您的程序還是不會(huì)正常運(yùn)行,也就是說(shuō),您必須在完成上面的步驟后,用代碼在窗體上添加控件(用controls.add,需要知道progid,可用api讀注冊(cè)表獲取,如果是activex dll的話,則用createobject進(jìn)行綁定)。但是,這樣的話,您不得不解決對(duì)控件事件的響應(yīng)問(wèn)題,這時(shí)只能用VBControlExtender解決問(wèn)題。

總而言之,盡管用VB可以實(shí)現(xiàn)綠色軟件,但是對(duì)第3方控件的處理實(shí)在是太麻煩了,而且文件體積會(huì)急劇增大,我的意見(jiàn)是這個(gè)綠色軟件不實(shí)現(xiàn)也罷,其實(shí)用我上面說(shuō)的方法,VB.NET嵌入文件到一個(gè)不需要注冊(cè)的文件倒是一個(gè)不錯(cuò)的主意,不過(guò),希望不要做危害別人安全的事,比如說(shuō),嵌入一段木馬程序。

責(zé)任編輯:曹凱 來(lái)源: zdnet.com.cn
相關(guān)推薦

2010-01-13 10:25:30

VB.NET文件夾操作

2010-01-18 16:33:57

VB.NET加密文件

2010-01-07 13:40:50

VB.NET讀取XML

2010-01-07 10:02:53

Flash控制VB.N

2010-01-18 18:50:26

VB.NET鼠標(biāo)手勢(shì)

2010-01-13 15:33:40

VB.NET菜單項(xiàng)目

2010-01-22 11:02:30

VB.NET創(chuàng)建新變量

2010-01-13 15:52:59

VB.NET浮動(dòng)窗體

2010-01-13 16:45:44

VB.NET刪除控件

2010-01-14 14:46:57

2010-01-22 10:54:06

VB.NET結(jié)構(gòu)變量

2010-01-15 15:10:43

VB.NET Stri

2010-01-11 15:31:04

VB.NET拖動(dòng)窗體

2010-01-14 16:04:32

VB.NET顯示時(shí)間

2010-01-18 10:26:19

VB.NET中心旋轉(zhuǎn)圖

2010-01-18 16:41:47

VB.NET用戶登錄頁(yè)

2010-01-11 16:04:10

VB.NET使用wit

2010-01-15 19:24:42

2010-01-22 16:27:19

VB.NET關(guān)于對(duì)話框

2010-01-19 15:30:44

VB.NET比較運(yùn)算符
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)