青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

Interacting with COM Components Using C#

 

In this article, we will analyze COM components and their application in C#. These components became popular among developers after Microsoft released Active Server Pages. However, the whole scenario changed when Microsoft released its Windows 2000 operating system and subsequent COM+ technology. In this article, we will examine the fundamentals of this exiting technology followed by its application in C#.

Introduction to COM

COM is a set of specification and services that facilitates a developer to create reusable objects and components for running various applications. COM components are components that are developed by using these specifications. These components can be implemented either as an executable (EXE) or as a Dynamic Link Library (DLL). They are basically developed using Visual Basic or Visual C++. They can either act as a server to a Visual Basic or C++ client application, or can be applied on the Web by using Active Server Pages (ASP).

In Visual Basic 6.0 (See Figure 1), you can refer a COM component in your application by adding a reference from the Project | References Menu. After that, you can call the respective methods of the added components in your client application. These components are introduced to reduce coding and to manage an application effectively.

Figure 1—Project | References Menu

In an Active Server Page application, you will write a code like what's shown below:

Set conn= Server.CreateObject("ADODB.Connection")

In the above code, ADODB is one of the components in which Connection is an object. Conn is a user-defined object, which should be referred while accessing the methods of the Connection object as shown below:

Conn.Open "Internet"

You cannot refer a built-in component directly in applications. As already examined, COM components can be either a Dynamic Link Library or Executable. Let's now discuss what these mean.

Dynamic Link Libraries are referred to as in-process objects because they run within the same address space as the client program that called the component. The main advantage in using these types of components is that a separate process is not created each time the component is accessed. Executables are considered to be out-of-process programs. They are executed in their own address space. Moreover, they consume more processing time when the program is called by an application.

In the case of DLLs, failure of an in-process component will ultimately bring down the application, whereas this may not happen in the case of EXEs because they are executed in their own address space.

With COM technology, you can:

  1. Create reusable components for your applications.
  2. Develop the component using one language and implement it in another language. For instance, you may develop a component using Visual C++ and implement it in a Visual Basic application.
  3. Make changes to the component without affecting the application.

Windows 2000 introduced a new technology called COM+, which is an extension to the existing COM. There are advanced technologies such as DCOM, which means Distributed COM. With DCOM, you can access components of other systems in a networked environment. However, a complete discussion to these technologies is beyond the scope of this article.

Creating a COM Component

In this session, we will demonstrate how to create a COM component by using Visual Basic 6.0, with the help of a series of steps. To create a COM component by using Visual Basic 6.0, you have to use either ActiveX DLL or ActiveX EXE projects. For our discussion, ActiveX DLL is used. The steps required for creating an ActiveX DLL are outlined below.

  1. Fire up Visual Basic and select the ActiveX DLL Icon from the New Project dialog box, as shown in Figure 2.

    Figure 2—Visual Basic 6.0 start up

  2. Change the class name to something meaningful like "Our_csharp".
  3. Now supply the code shown in Listing 1:

    Listing 1

    Public Function Show()
       MsgBox ("bye")
    End Function
    
  4. To create a function, you can use the Tools | Add procedure menu, as shown in Figure 3.

    Figure 3—Adding Procedure

  5. Save the project by supplying relevant class and project names of your choice.
  6. Change the Project name and Description by selecting the Project | Properties menu (see Figure 4).

    Figure 4—Properties Dialog

  7. Set the Binary Compatibility from the Components tab of the above menu because this action will not create a separate GUID upon each compilation.
  8. Finally, create your DLL by selecting File | Make Csharpcorner.dll. This is the name by which you save your VB project.

That's all. Your DLL is now complete. The next session will show you how to apply this DLL in your C# program.

Integrating the COM Component in C#

In this session, you will learn how to apply the DLL we discussed in last session in a C# application.

As you know with Visual Basic 6.0, it's possible to develop a COM server as shown in the previous session and implement it in a Visual Basic or Visual C++ client program. You may wonder about the idea of calling this DLL in a C# application. When we compile a C# program, an Intermediate Language (MSIL) is generated and it's called as Managed Code. A Visual Basic 6.0 DLL is Unmanaged, meaning it's not being generated by the Common Language Runtime. But, we can make this Visual Basic DLL interoperate with C# by converting the same into a .NET-compatible version.

It's not possible for a C# program to communicate with a Visual Basic DLL without converting the same into its .NET equivalent. To do so, the .NET SDK provides a tool called tlbimp. It stands for Type Library Import and converts your DLL to its equivalent .NET Assembly. For the above project, supply the following command after properly installing the SDK.

tlbimp Csharpcorner.dll /out:Csharp.dll

A new .NET-compatible file called Csharp.dll would be placed in the appropriate directory. The whole process is still not complete. You have to call this DLL in a C# program, as shown in Listing 2:

Listing 2

using Csharp;
using System;

public class Csharpapply     {

   public static void main()         {
      Our_csharp c = new Our_csharp();
      s.Show();
   }

}

Notice a function named Show() in the above session. It's called in the above listing. Notice the following declaration:

using Csharp;

Csharp is our .NET-compatible DLL file. Upon conversion, it will be changed to a .NET Assembly. In C#, all assemblies are referred with the keyword "using".

Upon execution of the above C# application, you can see the message box, as shown in Figure 5.

Figure 5—Sample Message Box

If you are using Visual Studio .NET, you can refer the DLL from Project | Add Reference | COM Tab. Select your DLL by using the browse button. This will add a reference to your project. After adding a reference, copy the above code and execute.

About the Author

Anand Narayanaswamy is a Microsoft MVP (Microsoft Most Valuable Professional) who works as a freelance Web/Software developer and technical writer. He runs and maintains learnxpress.com, and provides free technical support to users. His areas of interest include Web development, Software development using Visual Basic, and in the design and preparation of courseware, technical articles, and tutorials.

posted on 2005-11-18 12:30 夢在天涯 閱讀(707) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812163
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美日韩在线精品| 亚洲丰满少妇videoshd| 国内成人精品2018免费看| 国产精品男gay被猛男狂揉视频| 欧美成人一二三| 欧美成人综合一区| 欧美黑人国产人伦爽爽爽| 欧美精选午夜久久久乱码6080| 毛片基地黄久久久久久天堂| 免费高清在线一区| 日韩一级黄色av| 91久久国产综合久久91精品网站| 欧美国产日韩一区| 91久久精品国产91性色| 亚洲无人区一区| 久久婷婷国产综合尤物精品| 欧美日韩不卡在线| 国产一区二区三区无遮挡| 亚洲美女诱惑| 久久久久高清| 亚洲美女诱惑| 久久嫩草精品久久久久| 国产精品第一页第二页第三页| 尤物在线精品| 欧美国产激情| 欧美电影免费观看| 亚洲欧美另类在线| 欧美日韩成人网| 9l视频自拍蝌蚪9l视频成人| 欧美国产精品人人做人人爱| 欧美一区国产在线| 激情综合激情| 久久中文字幕一区| 欧美在线视频一区二区| 国产精品羞羞答答| 先锋影音网一区二区| 一区二区国产精品| 欧美日韩中文在线观看| 一区二区三区国产在线| 欧美二区在线播放| 欧美成人国产va精品日本一级| 亚洲日本va午夜在线电影| 亚洲第一成人在线| 欧美激情2020午夜免费观看| 一区二区黄色| 亚洲激情在线观看视频免费| 老司机精品福利视频| 久久久久国产免费免费| 亚洲国产欧美久久| 一本大道久久精品懂色aⅴ| 欧美精品亚洲精品| 亚洲欧美卡通另类91av| 久久久999精品视频| 亚洲精品影视在线观看| 日韩亚洲不卡在线| 国产一区二区高清| 99精品视频免费观看视频| 国产三级欧美三级| 99在线观看免费视频精品观看| 国产欧美一区二区白浆黑人| 亚洲国产欧美日韩另类综合| 国产精品任我爽爆在线播放| 久久精品亚洲乱码伦伦中文 | 亚洲最新视频在线播放| 香蕉乱码成人久久天堂爱免费| 亚洲欧洲在线免费| 久久久五月天| 久久香蕉国产线看观看网| 国产精品入口夜色视频大尺度| 亚洲国产精品成人| 在线看片第一页欧美| 午夜一级久久| 欧美伊人久久大香线蕉综合69| 欧美日韩国产在线| 亚洲巨乳在线| 亚洲一区二区三区免费视频| 欧美激情视频一区二区三区在线播放 | 欧美大成色www永久网站婷| 国产精品视频| 午夜精品区一区二区三| 欧美一区二区免费观在线| 欧美性大战久久久久久久| 亚洲人www| 亚洲午夜小视频| 香蕉久久夜色精品国产使用方法| 亚洲尤物影院| 一色屋精品视频在线看| 久久久亚洲午夜电影| 欧美激情女人20p| 中文欧美日韩| 国语对白精品一区二区| 久久综合中文字幕| 日韩午夜av| 老司机一区二区三区| 日韩午夜在线播放| 国产欧美日本| 欧美午夜视频网站| 欧美成人激情视频免费观看| 亚洲视频日本| 99riav久久精品riav| 激情婷婷亚洲| 老司机成人网| 99热免费精品在线观看| 欧美成人综合| 欧美大学生性色视频| 久久久91精品| 亚洲视频在线观看免费| 在线欧美视频| 国产综合久久久久影院| 国产精品香蕉在线观看| 欧美成熟视频| 午夜国产不卡在线观看视频| 亚洲精品久久久久| 亚洲福利一区| 国产一区二区日韩| 你懂的国产精品| 久久精品成人欧美大片古装| 亚洲国产欧美一区二区三区丁香婷| 国产精品久久久一区麻豆最新章节| 欧美第一黄网免费网站| 欧美激情中文字幕乱码免费| 欧美连裤袜在线视频| 国产精品白丝jk黑袜喷水| 国产精品v日韩精品v欧美精品网站| 欧美日韩国产综合久久| 国产精品一二三四| 国一区二区在线观看| 亚洲国产精品视频一区| 99精品黄色片免费大全| 亚洲免费在线看| 欧美+日本+国产+在线a∨观看| 亚洲午夜免费视频| 欧美国产日韩二区| 久久深夜福利免费观看| 黑人巨大精品欧美一区二区| 性做久久久久久久久| 一区二区三区免费在线观看| 日韩午夜精品视频| 久久久久久999| 中文在线资源观看网站视频免费不卡 | 国产精品美女久久| 亚洲国产精品精华液2区45| 欧美一级久久久久久久大片| 亚洲黄色片网站| 久久精品99久久香蕉国产色戒| 欧美日一区二区三区在线观看国产免 | 亚洲人成网站在线观看播放| 日韩一二在线观看| 巨乳诱惑日韩免费av| 亚洲欧美激情视频| 国产精品一区二区三区四区| 亚洲一区免费| 亚洲欧美日韩中文视频| 国产精品丝袜白浆摸在线| 亚洲免费中文| 欧美一区二区三区免费观看| 国产色爱av资源综合区| 久久精视频免费在线久久完整在线看 | 亚洲高清在线观看| 欧美大片在线看| 欧美精品福利视频| 亚洲一区二区动漫| 欧美一区二区在线免费播放| 在线观看国产日韩| 亚洲激情网站| 国产一区二区黄| 亚洲国产欧美日韩另类综合| 欧美区高清在线| 欧美在线影院在线视频| 老司机午夜免费精品视频| av成人黄色| 久久精品欧洲| 国产精品资源在线观看| 在线看欧美日韩| 日韩天堂在线观看| 亚洲国产精品热久久| 亚洲欧美春色| 亚洲午夜电影网| 欧美激情第六页| 欧美~级网站不卡| 国产日韩在线一区二区三区| 亚洲高清视频在线观看| 国产一区日韩二区欧美三区| 一本久久综合亚洲鲁鲁| 亚洲激情综合| 久久久噜噜噜久久久| 亚洲欧美日韩另类精品一区二区三区| 亚洲高清电影| 久久久久网址| 国产日韩一区二区三区在线| 蜜臀av国产精品久久久久| 亚洲欧美日韩精品久久久久| 免费成人激情视频| 欧美华人在线视频| 伊人一区二区三区久久精品| 午夜日韩在线| 久久综合伊人77777| 亚洲高清在线观看| 欧美激情视频免费观看| 亚洲精品久久久久久久久久久久久 |