亲爱的网友们,如果你对学生机器人平台窗口由工具栏控件库编程区和和详解两种C#自动实现DLLOCX控件注册不是很熟悉,那么你来对了地方。今天我将和大家分享一些关于学生机器人平台窗口由工具栏控件库编程区和和详解两种C#自动实现DLLOCX控件注册的知识,希望能够帮助大家更好地理解这个话题。

本文目录一览

学生机器人平台窗口由工具栏控件库编程区和什么组成

代码区。在机器人的编程中,是作为计算机专业的一项基本学习知识,学生机器人平台窗口的组成由工具栏,控件库,编程区和代码区组成,代码是能够使程序正常的进行运转使用的,这四个组成部分是缺一不可的。

返回目录

详解两种C#自动实现DLL(OCX)控件注册的方法

本文将为大家讲述DLL库自动注册的两种方法包括调用Regsvr方法等希望通过本文能对大家有所帮助

尽管MS为我们提供了丰富的NETFramework库我们的程序C#开发带来了极大的便利但是有时候一些特定功能的控件库还是需要由第三方提供或是自己编写当需要用到Dll引用的时候我们通常会通过添加引用的方式将它们纳入到项目中然后就可以像使用自己的类一样方便的使用它们了但是有些Dll库(OCX)文件是需要注册到Windows注册表后才能正常添加和使用的本文介绍两种为Dll库(OCX)自动注册的方法为大家提供参考

首先大家都知道在Windows的运行中输入Regsvrexe路径这样的方法来手动注册Dll控件(OCX)显示这种方法对于程序的自动化部署等带来极大的不便因此今天我们着重介绍如何用C#实现自动注册

方法一调用Regsvr法

既然可以在运行栏中输入Regsvrexe路径的方法来注册那么一定可以在C#程序中采用同样的方法来调用Regsvr以实现注册

Processp=newProcess();

pStartInfoFileName=Regsvrexe;

pStartInfoArguments=/sC:\\DllTestdll;

//路径中不能有空格pStart();采用这种方法注意要添加对命名空间SystemDiagnostics的引用

usingSystemDiagnostics;另外这种方法有一个不足之处那就是注册工作是在本程序之外由Regsvrexe程序来完成的系统内不方便知道注册的结果也不方便对注册过程弹出的对话框进行自定义和控制这里附Regsvr的参数说明(感谢网友伍华聪的提醒)

regsvrexe是位系统下使用的DLL注册和反注册工具使用它必须通过命令行的方式使用格式是

regsvr[/u][/s][/n][/i[:cmdline]]DLL文件名

命令可以在开始→运行的文本框中也可以事先在bat批处理文档中编写好命令未带任何参数是注册DLL文件功能其它参数对应功能如下

/u反注册DLL文件;

/s安静模式(Silent)执行命令即在成功注册/反注册DLL文件前提下不显示结果提示框

/c控制端口;

/i在使用/u反注册时调用DllInstall;

/n不调用DllRegisterServer必须与/i连用

方法二调用DllRegisterServer函数法

既然方法一不大实用那么我们就来寻找一种真正实用的方法来达到我们的目的吧研究Regsvrexe和Dll文件我们会发现其实每个需要注册的文件都包括一个DllRegisterServer()方法Regsvrexe就是通过调用该方法来完成Dll的注册的呵呵知道了这个我们就可以自己调用DllRegisterServer()来完成注册过程啦

首先还得引入外部方法

[DllImport(DllTestdll)]publicstaticexternintDllRegisterServer();//注册时用[DllImport(DllTestdll)]publicstaticexternintDllUnregisterServer();//取消注册时用接下来就不难啦

inti=DllRegisterServer();if(i>=)

{

//注册成功!

}

else

{

//注册失败}取消注册的过程就不应再贴代码啦

两种方法介绍完啦可是好像还缺点什么?对了那就是对Dll是否已经注册过了的判断一般情况下我们可以将对Dll控件的注册过程放在系统启动的过程中来完成但是总不能每次启动都注册一次吧?这样做显然不合理那么我们就来判断一下当前Dll是否已经注册过如果已注册过就跳过注册过程

每一个Dll的注册都会在注册表里记录下有关它本身的资料如注册路径唯一ID等我们这里就是利用它留下的唯一ID号来判断

RegistryKeyrkTest=RegistryClassesRootOpenSubKey(CLSID\\{FADEBAAFFBBDCAB}\\);

if(rkTest==null){

//Dll没有注册在这里调用DllRegisterServer()吧}注意要添加对命名空间MicrosoftWin的引用

usingMicrosoftWin;

lishixinzhi/Article/program/net/201311/12168

返回目录

如果您对本文的内容感到满意,请在文章结尾处点击“顶一下”以表示您的肯定。如果您对本文不满意,也请点击“踩一下”,以便我们改进该篇文章。如果您想更深入地了解相关内容,可以查看文章下方的相关链接。