很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样。
现在介绍一种使用资源文件,将dll、ocx打包进exe,点击直接注册的例子:
首先,新建一个工程RegisterFile。 新建文件夹Resource,里面添加需要注册的ocx或dll。这里我添加的是dsoframer.ocx,并将其文件“属性”中“生成操作”项的值改为“嵌入的资源”。
接下来,创建类Register.cs 里面只有一个函数RegisterDll()。 这里为省事,我把它放到了Program.cs里,同一命名空间下,效果是一样的。
view plaincopy to clipboardprint?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
namespace RegisterFile
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
}
class Register
{
public void RegisterDll(string strDll)
{
Process p = new Process();
p.StartInfo.FileName = "Regsvr32.exe";
p.StartInfo.Arguments = " " + strDll;
p.Start();
p.Close();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
namespace RegisterFile
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
}
class Register
{
public void RegisterDll(string strDll)
{
Process p = new Process();
p.StartInfo.FileName = "Regsvr32.exe";
p.StartInfo.Arguments = " " + strDll;
p.Start();
p.Close();
}
}
}
最后,在Form1_Load()中添加代码:
view plaincopy to clipboardprint?
//需要添加引用
//using System.IO;
//using System.Reflection;
//using System.Resources;
private void Form1_Load(object sender, EventArgs e)
{
this.Visible = false;
string strPath = string.Empty;
strPath = System.Environment.CurrentDirectory;
Assembly asm = Assembly.GetEntryAssembly();
using (Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx"))
{
int len = (int)stream.Length;
byte[] byts = new byte[len];
stream.Read(byts, 0, len);
stream.Close();
using (FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\dsoframer.ocx", FileMode.Create))
{
fs.Write(byts, 0, len);
}
}
Register r = new Register();
r.RegisterDll("dsoframer.ocx");
this.Close();
}
//需要添加引用
//using System.IO;
//using System.Reflection;
//using System.Resources;
private void Form1_Load(object sender, EventArgs e)
{
this.Visible = false;
string strPath = string.Empty;
strPath = System.Environment.CurrentDirectory;
Assembly asm = Assembly.GetEntryAssembly();
using (Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx"))
{
int len = (int)stream.Length;
byte[] byts = new byte[len];
stream.Read(byts, 0, len);
stream.Close();
using (FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\dsoframer.ocx", FileMode.Create))
{
fs.Write(byts, 0, len);
}
}
Register r = new Register();
r.RegisterDll("dsoframer.ocx");
this.Close();
}
注意:Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx")中"RegisterFile.Resource.dsoframer.ocx"的取值为“命名空间”+ “文件夹” + “文件名称”。
还有注册控件VB版。其实VB版才是先写的,后来才做的C#版。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xrongzhen/archive/2010/08/05/5790313.aspx
分享到:
相关推荐
压缩包子文件中的"DLL依赖查看工具-V1.0"很可能就是这个OCX控件DLL依赖关系查看工具的第一个版本,而"depends22_x64andx86"可能指的是Dependency Walker的一个版本,可能是第22版,并且同时支持64位和32位系统。...
以下是一种使用Setup Factory 7.0和IEConfig.exe工具将OCX打包成EXE的方法: 1. **Setup Factory 7.0**: 这是一个强大的安装包制作工具,它可以创建Windows安装程序,包括设置文件、注册表项、依赖库等。首先,你...
51个VB6 OCX控件 打包 控件列表: AniGIFV6.ocx asAssistantPopup.ocx asBubbleForm.ocx asctrls.ocx chklsb26.ocx ComboBox.ocx COMCT232.OCX comctl32.ocx COMDLG32.OCX CurtButton.ocx daxctle.ocx DBGRID32.OCX ...
1,把工程中引用的DLL,ocx控件文件放到工程目录下的dll_ocx目录进去 2,复制DLL_OCX目录到免注册工具包.exe下面 3,打开”免注册工具包.exe” 4,点2个按钮,生成清单、生成VB6资源文件 5,把目录下生成的:VB6资源...
通过"OCX打包EXE方法",我们可以看到这可能是一个教程或工具,指导用户如何将32位OCX控件打包成CAB和EXE文件。如果你有这方面的需要,这个资源可能会非常有用,提供了一种简便的方法来分发和安装你的OCX控件。在使用...
3. 打包控件:将控件的相关文件(如.DLL、.OCX等)以及注册信息放入CAB文件中。这一步通常通过Microsoft的MakeCab工具或者Visual Studio的项目设置来完成。 4. 配置HTML和JavaScript:在HTML页面中,使用`<OBJECT>`...
4. **创建CAB文件**:使用Microsoft的 cabinet工具(如Makecab.exe)或者其他第三方工具,将INF文件和所有相关的OCX、DLL文件打包到一个CAB文件中。确保在INF文件中指定正确的CAB文件名。 5. **部署CAB文件**:将...
anigif6.ocx 动画播放gif文件控件 gif89.dll 又一个播放gif文件的动态链接库 gifPlayer.ocx 又一个播放gif文件控件 flash.ocx 能播放flash动画文件 Digital.ocx 数码显示数字、时间,挺漂亮 MovingChar.ocx ...
在分享mscomm32.ocx控件时,我们通常会将其打包在一个压缩文件中,例如本文提到的“MSCOMM32.OCX注册”压缩包。这个压缩包内应包含mscomm32.ocx文件本身以及可能的注册脚本或说明文档,方便用户下载后进行注册操作。...
本篇文章将深入探讨`SignTool`,一个用于数字签名Windows应用程序和组件的工具,以及如何使用它来将OCX(ActiveX控件)打包成CAB( Cabinet)文件,从而简化安装过程。 `SignTool`是微软提供的一个命令行工具,它...
7. 示例代码:压缩包中的“读卡器OCX代码”可能包含封装过程中的源码示例,包括DLL的接口声明、OCX控件的属性和方法实现,以及CAB打包的相关脚本。这些代码可以作为学习和参考的素材,帮助开发者理解如何实际操作。 ...
本教程主要讲述了如何制作OCX控件、将其打包成CAB文件、在WEB页面中加载OCX控件、出错的提示等完整的教程。 1. OCX 制作过程: 在制作OCX控件时,需要使用VS 2008创建一个新的工程,选择“MFC ActiveX控件”。在类...
rWrap 允许你将程序所必需的所有 .dll 文件与 .ocx 文件打包到你的 V B 程序内部,并且不需要用户安装,直接就可以运行。并且 VB-PowerWra p 可以自动注册所必需的 .dll 与 .ocx 文件! VB-PowerWrap 通过扫描一个 ...
本资源提供的控件打包下载包括了一些非常常见的ActiveX控件,这些控件在开发基于Windows的应用程序时经常被用到,特别是在使用Visual Basic 6、VB.NET或者早期版本的Visual Studio时。以下是每个控件的详细介绍: 1...
2. 安装控件:将控件的安装文件(如OCX或DLL)复制到系统目录,通常是`C:\Windows\System32`(对于64位系统,可能是`C:\Windows\SysWOW64`)。 3. 注册控件:打开命令提示符,以管理员权限运行,然后使用`regsvr32`...
安装时,通常需要将控件的DLL或OCX文件复制到系统目录(如C:\Windows\System32),然后在命令行中使用`regsvr32`命令进行注册,例如`regsvr32 BV.ocx`。 2. **其他常见OCX控件**: - **MSComctlLib**: 这个库包含...
整个OCX打包CAB并签名的过程,涵盖了从准备INF文件、使用iExpress打包,到使用signtool进行签名,再到申请和使用数字证书的全流程,确保了OCX控件在分发和使用过程中的安全性和可靠性。这一系列步骤不仅是技术实践的...
在本文中,我们将深入探讨如何使用Visual Studio 2008 (C#) 开发ActiveX控件,以及如何创建和打包CAB文件,以便在网页中使用和更新。ActiveX技术允许开发者创建可以在多种应用程序中使用的组件,尤其是在网页中通过...
VB6工程文件(.vbp)通常包含源代码、资源、引用的控件(OCX)和动态链接库(DLL)等组件。在开发过程中,为了确保程序在目标计算机上正确运行,开发者需要将所有依赖项一起打包。"VB6工程支撑文件(OCX,DLL)分析提取...