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

开发 后端
VB.NET嵌入文件的应用在实际代码编写中是非常常见的一个操作。不过对初学者来说还是有些难以掌握的。下面我们就为大家详细介绍下其中概念,方便大家理解。

VB.NET嵌入文件的应用方式有很多种。大家可以根据开发中的不同需求来进行选择应用。下面我们就会对这一应用方式进行一个详细的解读,方便大家理解,提高大家的编程效率。#t#

在文件中嵌入文件,一般都是通过资源文件来实现的,至于具体的实现步骤,我想就不用我罗嗦了,网上有很多这样的文章,不清楚的朋友可以自己搜索一下。但是有些情况下,用资源文件无法解决问题,就不得不迂回一下,比如要实现所谓的绿色软件(在这里我要说明的是,这篇文章没有涉及任何高级技巧,因此,您略过不看,我也不会感到难过),事实上,大家知道,VB程序的运行需要VB运行库的支持,所以,用VB做绿色软件几乎是不可能的事。

幸运的是,某些版本的window预装了VB的运行库支持文件,为不可能变为可能,提供了机会。然而,一旦我们使用了第3方控件或在其他类似情况下,这种实现绿色软件的可能就微乎其微了,怎么办?如果用资源文件就称不上绿色软件了,那么,是不是就意味着我们必须放弃这种诱人的想法呢?别着急,往下看就知道应该如何去做了。:)

我的答案是直接以代码的形式,将VB.NET嵌入文件应用到到我们的VB程序中,下面我假设您已经知道了如何用api函数注册控件(当然在程序中调用regsvr32也可),知道了如何读写文件和注册表,这些问题和本问题息息相关,您有必要知道,如果不知道也不要紧,可以通过搜索引擎获取答案。

具体的实现步骤是:首先在程序加载时根据注册表中的键值,判断是否是第一次运行,如果是第一次运行,则将在您指定的路径生成需要的文件并写入数据,然后,调用api函数注册控件,同时,写注册表,标记已运行过本程序。

写文件的大致程序如下:

  1. Dim buff() As Byte 

接下来写根据VB.NET嵌入文件的内容给数组赋值的语句

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

 

看到这里,有些朋友要被我气乐了,会愤怒的对我说:你说的这些我都知道,关键是怎么给数组赋值,难道你要我用16进制的编辑器查看文件数据,进行赋值吗?这时,我会回答:是的,不过这个过程可以通过程序实现,看看下面的代码:

 

  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 

这段代码的作用是自动将你需要手动输入的代码写入一个文本文件,您剩下的工作就是,调用这段代码,手动打开刚刚生成的文件,把文字全部选中,复制,并粘贴到VB中您需要手动编写代码的地方。其中参数FileName为您需要嵌入的文件的文件名,ByteArrayName为您程序中用到的数组名(如果用我那段让您生气的代码,您就传入"buff"),TxtFile为要生成的文本文件的文件名。假如,您要将您磁盘上的c:test.ocx嵌入程序,您在程序中的数组名称为"buff",您可以这样调用:

writetext "c:test.ocx", "buff", "d:mcmcbuff.txt",然后打开文件d:mcmcbuff.txt,进行,全选,复制,粘贴。

不得不说的是,尽管您可以在程序中释放文件,自动注册,但是如果您用的第3方控件是您画到窗体上的,您的程序还是不会正常运行,也就是说,您必须在完成上面的步骤后,用代码在窗体上添加控件(用controls.add,需要知道progid,可用api读注册表获取,如果是activex dll的话,则用createobject进行绑定)。但是,这样的话,您不得不解决对控件事件的响应问题,这时只能用VBControlExtender解决问题。

总而言之,尽管用VB可以实现绿色软件,但是对第3方控件的处理实在是太麻烦了,而且文件体积会急剧增大,我的意见是这个绿色软件不实现也罢,其实用我上面说的方法,VB.NET嵌入文件到一个不需要注册的文件倒是一个不错的主意,不过,希望不要做危害别人安全的事,比如说,嵌入一段木马程序。

责任编辑:曹凯 来源: zdnet.com.cn
相关推荐

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-13 15:33:40

VB.NET菜单项目

2010-01-18 18:50:26

VB.NET鼠标手势

2010-01-22 11:02:30

VB.NET创建新变量

2010-01-13 15:52:59

VB.NET浮动窗体

2010-01-14 14:46:57

2010-01-13 16:45:44

VB.NET删除控件

2010-01-15 15:10:43

VB.NET Stri

2010-01-22 10:54:06

VB.NET结构变量

2010-01-14 16:04:32

VB.NET显示时间

2010-01-18 16:41:47

VB.NET用户登录页

2010-01-18 10:26:19

VB.NET中心旋转图

2010-01-11 15:31:04

VB.NET拖动窗体

2010-01-12 17:02:54

VB.NET文件上传

2010-01-19 15:30:44

VB.NET比较运算符

2010-01-22 16:27:19

VB.NET关于对话框

2010-01-15 19:24:42

点赞
收藏

51CTO技术栈公众号