控件注册 - 利用资源文件将dll、ocx打包进exe文件(转)

很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样。

 

      现在介绍一种使用资源文件,将dll、ocx打包进exe,点击直接注册的例子:

      首先,新建一个工程RegisterFile。  新建文件夹Resource,里面添加需要注册的ocx或dll。这里我添加的是dsoframer.ocx,并将其文件“属性”中“生成操作”项的值改为“嵌入的资源”。

      

      接下来,创建类Register.cs   里面只有一个函数RegisterDll()。 这里为省事,我把它放到了Program.cs里,同一命名空间下,效果是一样的。    

     

[c-sharp] view plaincopy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Windows.Forms;  
  5.   
  6. using System.Diagnostics;  
  7.   
  8. namespace RegisterFile  
  9. {  
  10.     static class Program  
  11.     {  
  12.         /// <summary>  
  13.         /// 应用程序的主入口点。  
  14.         /// </summary>  
  15.         [STAThread]  
  16.         static void Main()  
  17.         {  
  18.             Application.EnableVisualStyles();  
  19.             Application.SetCompatibleTextRenderingDefault(false);  
  20.             Application.Run(new frmMain());  
  21.         }  
  22.     }  
  23.   
  24.   
  25.   
  26.     class Register  
  27.     {  
  28.         public void RegisterDll(string strDll)  
  29.         {  
  30.             Process p = new Process();  
  31.             p.StartInfo.FileName = "Regsvr32.exe";  
  32.   
  33.             p.StartInfo.Arguments = " " + strDll;  
  34.             p.Start();  
  35.   
  36.             p.Close();  
  37.         }  
  38.     }  
  39. }  

 

     

      最后,在Form1_Load()中添加代码:  

     

[c-sharp] view plaincopy
  1. //需要添加引用  
  2. //using System.IO;  
  3. //using System.Reflection;  
  4. //using System.Resources;          
  5.   
  6.   
  7.         private void Form1_Load(object sender, EventArgs e)  
  8.         {  
  9.             this.Visible = false;  
  10.   
  11.             string strPath = string.Empty;  
  12.             strPath = System.Environment.CurrentDirectory;  
  13.   
  14.   
  15.             Assembly asm = Assembly.GetEntryAssembly();  
  16.             using (Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx"))  
  17.             {  
  18.                 int len = (int)stream.Length;  
  19.                 byte[] byts = new byte[len];  
  20.   
  21.                 stream.Read(byts, 0, len);  
  22.                 stream.Close();  
  23.   
  24.                 using (FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.System) + "//dsoframer.ocx", FileMode.Create))  
  25.                 {  
  26.                     fs.Write(byts, 0, len);  
  27.                 }  
  28.             }  
  29.   
  30.               
  31.   
  32.             Register r = new Register();  
  33.             r.RegisterDll("dsoframer.ocx");  
  34.   
  35.             this.Close();  
  36.         }  

 

 

 

     注意:Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx")中"RegisterFile.Resource.dsoframer.ocx"的取值为“命名空间”+ “文件夹” + “文件名称”。

转载于:https://www.cnblogs.com/xyqCreator/archive/2012/07/17/2594670.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Canvas-图片旋转

Canvas-图片旋转 众所周知canvas是位图&#xff0c;你可以在里面渲染你要的东西&#xff0c;不过你只能操作canvas的属性来进行编辑。就是说你并不能操作画进canvas的东西&#xff0c;例如我在canvas里添加一幅画&#xff0c;我现在想将那幅画移动10px&#xff0c;我们并不能直…

在嵌入式Neo4j中使用Neo4j浏览器

有时候&#xff0c;您有一个应用程序以嵌入式模式使用Neo4j&#xff0c;但还需要使用Neo4j Web浏览器来处理图形。 由于一次最多只能从一个进程访问数据库&#xff0c;因此在嵌入式Neo4j应用程序运行时尝试启动Neo4j服务器将无法工作。 WrappingNeoServerBootstrapper尽管已被…

CSS3实现多页签图片缩放切换效果

多页签切换效果&#xff0c;图片缩放&#xff0c;鼠标移动到图片上后显示文字内容等等&#xff0c;效果很集中呐 截图如下&#xff1a; 下载地址&#xff1a;http://www.lanrenzhijia.com/js/css3/2012/0718/602.html 预览地址&#xff1a;http://www.lanrenzhijia.com/yulan/2…

正则表达式学习笔记

该笔记内容通过《Learn regular expressions in about 55 minutes》整理得到。 文章链接&#xff1a;https://qntm.org/files/re/re.html 其中文翻译很多&#xff0c;中文名叫&#xff1a;55分钟学会正则表达式。 实际上我也算过了&#xff0c;55分钟实在不太可能&#xff0c;也…

清洁单元测试图案–演示幻灯片

我有机会在2014年GDG DevFestKarlsruhe会议上谈论“清洁单元测试模式”。 感谢组织者邀请我&#xff0c;也感谢所有听我讲话的人。 如所承诺的&#xff0c;我为那些想看一下我在演讲中没有讲到的其他幻灯片的人分享了演示文稿&#xff1a; 清洁单元测试图案 JUnit测试并不像看…

“取反”运算符

“取反”运算符转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/24/3845558.html

Angular使用总结 --- 如何正确的操作DOM

无奈接手了一个旧项目&#xff0c;上一个老哥在Angular项目中大量使用了JQuery来操作DOM&#xff0c;真的是太不讲究了。那么如何优雅的使用Angular的方式来操作DOM呢&#xff1f; 获取元素 1、ElementRef --- A wrapper around a native element inside of a View. 在组件…

Hibernate Collection乐观锁定

介绍 Hibernate提供了一种乐观的锁定机制 &#xff0c;即使长时间通话也可以防止丢失更新 。 结合实体存储&#xff0c;跨越多个用户请求&#xff08;扩展的持久性上下文或分离的实体&#xff09;&#xff0c;Hibernate可以保证应用程序级的可重复读取 。 脏检查机制检测实体状…

非首屏图片延时加载

目标 减少资源加载可以明显的优化页面加载的速度&#xff0c;所以可以减少页面载入时立即下载的图片的数量&#xff0c;以提高页面加载速度&#xff0c;其他的图片在需要的时候再进行加载。 思路 想要实现以上的目标&#xff0c;有几个地方需要思考。 1、如何判断哪些图片需要…

具有链接资源的Spring RestTemplate

Spring Data REST是一个了不起的项目&#xff0c;它提供了一些机制来将基于Spring Data的存储库中的资源公开为REST资源。 使用链接资源公开服务 考虑两个简单的基于JPA的实体&#xff0c;课程和教师&#xff1a; Entity Table(name "teachers") public class Tea…

POJ 1521 Entropy

求哈夫曼树的平均码长&#xff0c;用优先队列来写&#xff0c;先记录某个字符在字符串里出现的次数&#xff0c;然后放入 队列。依次取出第一小和第二小的数&#xff0c;将两个数相加&#xff0c;构成新的虚拟结点&#xff0c;放入队列中。 /*Accepted 196K 0MS C …

事件处理详解

前言 本文大概整理下绑定事件的几种方式&#xff0c;兼容IE8- 的方式&#xff08;如果需要的话&#xff09;&#xff0c;事件委托&#xff0c;阻止传播&#xff0c;取消默认行为&#xff0c;event对象等。 之前做的多是手机端页面&#xff0c;监听事件也一直是 addEventListene…

用户会话,数据控件和AM池

最近&#xff0c;有人问我有关应用程序模块池的有趣问题。 众所周知&#xff0c;AM池包含用户会话引用的应用程序模块实例&#xff0c;这允许会话在后续请求时从池中获取完全相同的AM实例。 如果应用程序中有多个根应用程序模块&#xff0c;那么每个模块都将拥有自己的AM池&am…

对Group_concaT函数利用剖析 (转)

作者&#xff1a;晓华 开篇介绍 在FLYH4T大哥的“Mysql5注射技巧总结”一文中介绍了通过使用“information_schema”库实现遍历猜解库名表名以及字段名的技术&#xff0c;解决了一些以前使用工具无法猜解到的库名表名以及字段名的问题&#xff0c;提高了注射的效率。关于此文的…

用 CSS 实现元素垂直居中,有哪些好的方案?

DIV居中的经典方法 1. 实现DIV水平居中 设置DIV的宽高&#xff0c;使用margin设置边距0 auto&#xff0c;CSS自动算出左右边距&#xff0c;使得DIV居中。 1 div{ 2 width: 100px; 3 height: 100px; 4 margin: 0 auto; 5 } 缺点&#xff1a;需要设置div的宽度 2.…

使用wss和HTTPS / TLS保护WebSocket的安全

是这个博客的第50条提示&#xff0c;是的&#xff01; 技术提示&#xff03;49说明了如何使用用户名/密码和Servlet安全机制保护WebSocket的安全。 本技术提示将说明如何在WildFly上使用HTTPS / TLS保护WebSocket。 让我们开始吧&#xff01; 创建一个新的密钥库&#xff1a…

时钟同步及其应用(接上一篇)

在linux下做的时钟同步的工作终于暂时告一段落了。 前面简单的做了客户端和服务器端的同步&#xff0c;在基于时间同步的机制上&#xff0c;将系统的1s的时间划分多个时槽。由于此时间同步应用在分布式系统中&#xff0c;涉及到多个客户端和服务器通信的问题&#xff0c;因此划…

Java性能调优调查结果(第二部分)

这是系列文章的第二篇&#xff0c;我们将分析2014年10月进行的性能调整调查的结果。如果您尚未阅读第一部分&#xff0c;我们建议从此处开始 。 第二部分将重点监视Java应用程序的性能问题。 特别是&#xff0c;我们尝试回答以下问题&#xff1a; 人们如何发现性能问题&#x…

HDU 2094 产生冠军

判断顶点入度是否唯一即可。如果入度为0的节点只有一个&#xff0c;输出Yes&#xff0c;否则输出No。 代码&#xff1a; 1 #include<iostream>2 #include<cstring>3 4 using namespace std;5 6 int len;7 int map[1001][1001];8 char name[1001][100];9 10 int fu…

简单的css缩放动画,仿腾讯新闻的分享按钮和美团app底部的图标样式

最近看到一些好看的hover的图形缩放效果。然后自己就写了下&#xff0c;发现这2种效果都不错。如果伙伴们更好的实现方式可以在下面留言哦~ 还有美团的效果&#xff0c;我就不展示了&#xff0c;喜欢的可以去app应用上看看。 这两种效果&#xff0c;其实实现的原理是一样的&…