`
csstome
  • 浏览: 1556146 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

.Net使用非托管程序

 
阅读更多

开发过程中我们或多或少都要使用到非托管组件,例如常见的ActiveX(一般是vb写的.ocx组件)或Com组件(一般是c++编写)。我们都知道.Net程序是可以使用托管代码的,常见的方式大概可以分为两种:一使用使用DllImport的方式调用直接调用非托管代码;二使用转化为"Interop"开头后缀为".dll"的包装组件(可以通过vs添加引用[vs会自动生成相应组件放到obj文件夹中]或者使用 Tlbimp.exe工具来实现)。

对于第一种方式主要用于简单的调用并且不想用部署ActivX或Com组件的情况下,难点就是根据非托管类型找到对应的托管类型(但是网上介绍了很多方法,包括一些工具来帮助我们解决这个问题)。而对于第二种方法,通过包装类来解决的优点其实就是使用方便,可是它需要注册Com组件(使用regsvr32工具)。

对于第二种方式一块看一个例子吧(第一种我就不再举例子了,有时间我们再重点看一下):

下面一段代码是检查是否插入Usb Key的,UKey的组件本身是ocx控件,通过添加以用UKEYOTPLib在obj中生成一个Interop.UKEYOTPLib.dll来完成对控件的包装,然后在代码中就像使用一般托管组件一样。

首先我先不注册组件试试,结果如下图提示未找到组件。

接着我注册组件而不插入UKey。

插入UKey后

注意:注册组件一般使用Regsvr32工具,像Ukey这种一般都有安装程序,安装的过程中会自动注册。

以上是常用的调用非托管程序的方法,那么除了这两种方法是不是还有其他方式呢?那就是通过"加载非托管动态链接库"的方式来实现。这个个人用的不太多所以也就不再赘余了。

补充:有时候我们在注册了组件却不知道,或者有重复注册的现象(注意重复注册的话会有可能因为版本不同给你造成困扰)。既然这样如何知道所注册的组件信息呢?答案就是利用window优化大师。执行:系统清理--ActiveX清理--分析,就可以看到所有已注册的Com或ActiveX组件。例如下图我注册的Usb Key组件信息。

在这里再给大家介绍一个小技巧:如果你看到了已注册的信息想要反注册而又怕使用命令行麻烦的话,可以先按照window优化大师给出的组件位置,将其放到别处,然后用windows优化大师修复(因为这是指定的位置不存在相应组件,优化大师就认为这是垃圾信息)就可以将注册信息删除。

分享到:
评论

相关推荐

    vb.net多线程 托管例子

    在VB.NET中创建托管线程主要使用`System.Threading.Thread`类。下面是一个简单的例子: ```vbnet Dim newThread As New Thread(AddressOf WorkerMethod) newThread.Start() ``` 在这个例子中,`WorkerMethod`是我们...

    asp.net托管代码非托管代码

    这时,可以使用.NET Framework的P/Invoke(Platform Invoke)服务或.NET Core的DllImport特性来实现托管代码与非托管代码的交互。 在实际应用中,托管代码和非托管代码的结合使用可以充分利用两者的优势。例如,...

    超详细解析托管代码与非托管代码以及dll调用.zip_托管代码_非托管

    托管代码与非托管代码是编程领域中的两个重要概念,它们主要与.NET框架和C++等语言的使用密切相关。本文将深入探讨这两个概念,以及DLL动态链接库调用的相关知识。 首先,我们来理解什么是托管代码。在.NET环境中,...

    李维《Dephi.NET托管与非托管代码》

    他还可能会讨论托管代码如何通过.NET Framework的CLSCompliant特性来保证语言的互操作性,以及如何使用Unsafe代码块来处理非托管资源,这在处理低级别操作时非常关键。 此外,书中的内容可能还会涵盖托管与非托管...

    托管ORACLE 驱动

    标题 "托管ORACLE驱动" 指的是在.NET框架中使用Oracle数据库的托管驱动程序,这意味着开发者无需在服务器或开发环境中安装完整的Oracle客户端软件。在.NET 4.0环境下,Oracle提供了一种名为ODP.NET(Oracle Data ...

    Framework编写 使用.NET Framework编写应用程序,就是使用.NET代码库编写代码(使用支持Framework的任何一种语言)。本书中所有的示例都使用VS进行开发,VS是一种强大的集成开发环境,支持C#(以及托管和非托管C++、Visual Basic和其他一些语言)。这个环境的优点是便于把.NET功能集成到代码中。我们创建的代码完全是C#代码,但使用.NET Framework,并在需要时利用VS中的其他工具。

    .NET Framework 是微软开发的一个软件框架,它为开发者提供了一个统一的平台来编写各种应用程序,支持多种编程语言,如C#、Visual Basic、托管C++等。在这个框架下,开发过程通常借助于Visual Studio(VS)这个强大...

    vc.net2005调用WebService(托管与非托管)

    对于非托管的Web服务调用,我们需要使用SOAP协议进行通信,因为非托管代码无法直接使用.NET框架的托管Web服务支持。以下是调用非托管Web服务的基本步骤: 1. 创建HTTP请求,设置适当的头信息,包括SOAPAction和...

    纯C# 托管与非托管DLL注入

    本文主要探讨如何使用纯C#实现托管与非托管DLL的注入。 一、托管与非托管DLL的区别 1. 托管DLL:由.NET Framework管理的代码,遵循.NET的语法规则,编译后生成MSIL(中间语言),在运行时通过JIT(Just-In-Time)...

    基于VB.NET的Windows应用程序设计

    本课程介绍使用VB.NET开发Windows应用程序所需的知识和技能 预备知识 掌握基本的VB.NET语法 掌握数据库的基本知识 掌握面向对象的编程思想 能够使用Visual Studio.NET图形化界面开发环境 课时:108 课时 分为两部分 ...

    面向.net的web应用程序设计课后答案

    【面向.NET的Web应用程序设计】课程的课后答案涵盖了.NET Framework的基本概念及其核心组成部分,以及Microsoft Visual Studio .NET的使用技巧。以下是对这些知识点的详细解释: 1. **Microsoft .NET Framework**:...

    托管 vs 非托管

    托管与非托管代码是编程领域中的两个重要概念,主要涉及.NET框架和C++等语言的使用。这篇文章将深入探讨这两者的差异,以及它们在实际开发中的应用。 托管代码(Managed Code)是指能够在.NET Framework的公共语言...

    VB.NET 写DLL注入程序

    本教程将深入探讨如何使用VB.NET编写DLL注入程序,以及相关的知识点。 首先,我们需要了解DLL的基本概念。DLL是一种可重用的代码库,它包含一组可供其他应用程序调用的函数或方法。DLL注入通常涉及将一个DLL文件...

    Visual C++ .NET托管扩展编程

    作者:[英]Richard Grimes <br>梁超 钱伟 吴连祥 译 <br>微软.NET程序员系列 <br>... 本书适合准备使用C++.NET托管扩展进行开发的中、高级读者阅读。 <br>http://www.verycd.com/topics/127242/<br>

    面向.net的web应用程序设计实验文件

    8. **部署**:学习如何将Web应用程序发布到IIS服务器,或者使用Azure等云平台进行托管。 9. **错误处理和日志记录**:理解如何捕获和处理异常,以及记录应用程序的运行情况。 10. **性能优化**:探讨缓存策略、...

    VB.NET_MGD_CAD-drawJig_start.rar_0mgd.net_cad 托管_cad.net_vb cad

    在IT行业中,VB.NET是一种广泛使用的编程语言,尤其在创建桌面应用程序方面表现出色。本话题主要涉及使用VB.NET进行CAD(计算机辅助设计)软件的开发,特别是如何通过托管代码(Managed Code)实现这一目标。首先,...

    如何自动将.NET功能导出到非托管程序

    标题中的“如何自动将.NET功能导出到非托管程序”是指在.NET环境中创建一个库或服务,使得非托管代码(如C++、Java或其他非.NET语言编写的应用)能够调用.NET的功能。这通常通过实现COM互操作或者使用P/Invoke...

    非托管代码回调方法的实现

    1. **P/Invoke**:使用Platform Invoke(P/Invoke)机制是.NET与非托管代码交互的基础。通过定义DllImport特性,我们可以导入非托管库中的函数,并指定参数类型和返回值。在回调方法中,我们需要传递一个委托类型的...

    【ASP.NET编程知识】利用IIS调试ASP.NET网站程序的完整步骤.docx

    本文将详细介绍如何使用 IIS 调试 ASP.NET 网站程序的完整步骤,从标题到描述、标签和部分内容,我们都将对 ASP.NET 编程知识进行详细的解释和分析。 首先,让我们来看一下标题“利用 IIS 调试 ASP.NET 网站程序的...

    ASP.NET精品全站程序SQL版源码

    这个"ASP.NET精品全站程序SQL版源码"是一个完整的解决方案,它包含了一整套使用ASP.NET技术和SQL数据库构建的网站应用。下面将详细阐述这个源码包可能涉及的关键知识点: 1. **ASP.NET框架**:ASP.NET提供了多种...

    使用.NET Framework扩展MFC程序

    总的来说,扩展MFC程序使用.NET Framework是一项技术挑战,但也提供了无限的可能性。开发者可以通过熟练掌握这两种技术的结合,构建出既有MFC的灵活性和效率,又具有.NET丰富功能的高效应用程序。

Global site tag (gtag.js) - Google Analytics