50分急求!!!如何在生成EXE文件时,把DLL,OCX文件也集成在EXE里面~~谢谢(不是指用制作成安装文件的方法~)谢谢~~
解决方案 »
- 任命Modest为 COM/DCOM/COM+ 子版版主
- VB密码规则问题(50分)
- VB工程引用的问题
- 斑竹请谅解,【我公司(国有企业)欲在北京招程序员1-2名】有意者请进。
- 存储过程
- 如何实现当修改ImageCombo的Text时加上图片?
- 数据库高手来请进,喜欢数据库的来看看!
- 急!!!!!!!VB中如何以Post方式提交表单??(一个网页的表单要用Post才能正确,VB中如何实现?)分数不够再加!!!!!!!!!!
- BARDO手稿:VB高手之路(1)(2)(3)VB初学者请进来
- 菜鸟提问!
- 求教,如何在vb程序中用代码注册一个ocx文件?
- 兄弟们,救救小弟,如何写一个不用安装的数据库应用程序?
如果是只要在运行时COPY一下就行了
把DLL,OCX文件 和你的 EXE 文件放到同一目录下就好了。
如果要用.dll,.ocx等也应该是调用系统自身的.dll和.ocx,要不怎么说什么什么病毒、木马之类的感染什么什么系统,换个系统当然系统文件也换了,所以...(这个是我猜的,我不会编写木马^-^)
这种方法通常无法将msvbvm60.dll打进去,原因就是VB无论如何也不可能脱离这个文件运行,所以在winme以上计算机上可以不用带这个文件,将其它所有OCX和DLL都打到EXE中,不过注意,释放这些文件的窗体(初如化窗体应该不要加载其它第三方控件否则程序开始就无法运行)。在WIN98下你只能在EXE文件外再带一个msvbvm60.dll了。
谢谢~~
接下来写根据要嵌入的文件内容给数组赋值的语句
Open 文件名 For Binary As #1
Put #1, , buff
Close #1 看到这里,有些朋友要被我气乐了,会愤怒的对我说:你说的这些我都知道,关键是怎么给数组赋值,难道你要我用16进制的编辑器查看文件数据,进行赋值吗?这时,我会回答:是的,不过这个过程可以通过程序实现,看看下面的代码:Private Sub writetext(ByVal FileName As String, ByVal ByteArrayName As String, ByVal TxtFile As String)
Dim i As Long
i = FileLen(FileName)
Dim arr() As Byte
ReDim arr(i - 1)
Open FileName For Binary As #1
Get #1, , arr
Close #1
Dim temps As String
Open TxtFile For Output As #1
Print #1, "ReDim " + ByteArrayName + "(" + CStr(i - 1) + ")"
For i = 0 To UBound(arr)
temps = ByteArrayName + "(" + CStr(i) + ")=" + CStr(arr(i))
Print #1, temps Next
Close #1
'MsgBox "haha "
End Sub
这段代码的作用是自动将你需要手动输入的代码写入一个文本文件,您剩下的工作就是,调用这段代码,手动打开刚刚生成的文件,把文字全部选中,复制,并粘贴到vb中您需要手动编写代码的地方。其中参数FileName为您需要嵌入的文件的文件名,ByteArrayName为您程序中用到的数组名(如果用我那段让您生气的代码,您就传入"buff"),TxtFile为要生成的文本文件的文件名。假如,您要将您磁盘上的c:\test.ocx嵌入程序,您在程序中的数组名称为"buff",您可以这样调用:writetext "c:\test.ocx", "buff", "d:\mc\mc\buff.txt",然后打开文件d:\mc\mc\buff.txt,进行,全选,复制,粘贴。 不得不说的是,尽管您可以在程序中释放文件,自动注册,但是如果您用的第3方控件是您画到窗体上的,您的程序还是不会正常运行,也就是说,您必须在完成上面的步骤后,用代码在窗体上添加控件(用controls.add,需要知道progid,可用api读注册表获取,如果是activex dll的话,则用createobject进行绑定)。但是,这样的话,您不得不解决对控件事件的响应问题,这时只能用VBControlExtender解决问题,详细可参考:如何动态新增控制项?http://vbboshi.myrice.com/preblem/41-60/pr52.htm#259 总而言之,尽管用vb可以实现绿色软件,但是对第3方控件的处理实在是太麻烦了,而且文件体积会急剧增大,我的意见是这个绿色软件不实现也罢,其实用我上面说的方法,嵌入一个不需要注册的文件倒是一个不错的主意,不过,希望不要做危害别人安全的事,比如说,嵌入一段木马程序。