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

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 夢在天涯 閱讀(725) 評論(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

搜索

  •  

積分與排名

  • 積分 - 1819339
  • 排名 - 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>
              亚洲国产成人精品久久| 欧美伊人久久久久久久久影院| 亚洲午夜黄色| 亚洲激情av| 欧美在线影院在线视频| 亚洲欧美一区二区在线观看| 欧美久久久久久蜜桃| 猛男gaygay欧美视频| 国产婷婷精品| 亚洲图片欧洲图片av| 夜夜嗨av一区二区三区四季av| 久久综合久久综合这里只有精品| 欧美在线精品免播放器视频| 国产精品白丝jk黑袜喷水| 亚洲欧洲日本专区| 亚洲激情成人| 久久综合给合久久狠狠色| 久久免费一区| 精品成人a区在线观看| 午夜精品久久久久久久99热浪潮| 亚洲一区二区三区欧美| 欧美日韩国产综合视频在线观看| 亚洲人精品午夜在线观看| 亚洲激情视频| 欧美精品激情blacked18| 亚洲电影第三页| 日韩特黄影片| 欧美日韩精品系列| 99re热这里只有精品视频 | 韩国美女久久| 久久精品免费观看| 噜噜噜躁狠狠躁狠狠精品视频| 影音先锋一区| 欧美凹凸一区二区三区视频| 亚洲国产精品va在线观看黑人| 91久久精品一区| 欧美国产视频日韩| 在线视频亚洲| 欧美在线视频免费观看| 国产一区二区三区在线观看免费视频| 欧美一区1区三区3区公司| 另类综合日韩欧美亚洲| 亚洲人成毛片在线播放| 欧美日韩成人免费| 亚洲一区国产视频| 久久夜色精品| 一本久道综合久久精品| 国产精品久久久久久久久动漫| 午夜欧美精品| 欧美高潮视频| 亚洲综合不卡| 伊人色综合久久天天五月婷| 欧美福利在线观看| 亚洲午夜高清视频| 欧美~级网站不卡| 中文欧美日韩| 依依成人综合视频| 欧美日韩国产综合网| 欧美在线观看视频在线| 亚洲福利av| 久久久青草青青国产亚洲免观| 91久久国产综合久久| 国产精品狼人久久影院观看方式| 久久久久久久久伊人| 日韩亚洲欧美精品| 老司机精品久久| 午夜精品国产精品大乳美女| 在线不卡中文字幕播放| 国产精品进线69影院| 欧美不卡福利| 久久av一区二区三区| 在线视频精品一| 欧美国产日韩一区二区| 久久精品二区| 亚洲在线播放电影| 亚洲免费av观看| 永久91嫩草亚洲精品人人| 国产精品精品视频| 欧美日韩精品一区| 欧美成人在线免费观看| 久久九九99视频| 香蕉尹人综合在线观看| 在线视频日本亚洲性| 91久久精品日日躁夜夜躁国产| 久久久久久尹人网香蕉| 性欧美大战久久久久久久免费观看 | 亚洲无亚洲人成网站77777| 国产精品国产三级国产普通话蜜臀| 久久综合狠狠综合久久综合88| 亚洲精品欧美日韩专区| 久久夜色撩人精品| 午夜精品久久| 亚洲美女免费精品视频在线观看| 欧美精品观看| 欧美国产精品专区| 久久精品视频99| 亚洲一区久久| 99亚洲伊人久久精品影院红桃| 欧美成人在线网站| 久久综合九色综合久99| 亚洲视频一区二区在线观看| 一本久道综合久久精品| 亚洲东热激情| 经典三级久久| 国产亚洲精品bt天堂精选| 欧美视频在线观看一区二区| 欧美另类99xxxxx| 久久久久网站| 久久成人免费电影| 午夜精彩视频在线观看不卡 | 欧美韩日高清| 久久青草福利网站| 久久九九精品99国产精品| 久久激情婷婷| 久久久久久久网站| 欧美自拍偷拍午夜视频| 欧美一级大片在线免费观看| 亚洲图片在线观看| 亚洲一区二区免费看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产精品一区二区久久精品| 国产精品爱久久久久久久| 欧美日韩日日骚| 欧美日韩视频第一区| 欧美日韩国产麻豆| 欧美日韩一区二区三区在线看 | 一本色道精品久久一区二区三区| 亚洲国产乱码最新视频| 91久久精品一区| 欧美日韩黄视频| 亚洲在线日韩| 亚洲一区在线看| 亚洲欧美资源在线| 久久精品视频免费| 久久全国免费视频| 欧美成人有码| 国产精品一区二区男女羞羞无遮挡 | 国产精品国产精品国产专区不蜜| 欧美aa在线视频| 欧美日韩国产在线| 国产乱肥老妇国产一区二| 国产日韩欧美黄色| 亚洲二区在线视频| 夜夜爽www精品| 亚洲一区中文| 久久激情综合| 亚洲高清电影| 亚洲午夜精品网| 久久久福利视频| 久久九九热re6这里有精品| 欧美专区亚洲专区| 欧美激情久久久久久| 欧美视频国产精品| 国产一区美女| 亚洲精品一级| 欧美在线观看www| 美腿丝袜亚洲色图| 亚洲三级电影在线观看| 欧美一级淫片aaaaaaa视频| 麻豆精品在线视频| 国产精品视频精品| 最新国产乱人伦偷精品免费网站| 亚洲区欧美区| 久久综合狠狠综合久久综青草| 亚洲精品在线三区| 久久精品欧美| 国产精品国产三级国产普通话99| 伊人久久婷婷| 一区二区三区毛片| 欧美激情精品久久久久久| 亚洲欧美久久| 欧美日产国产成人免费图片| 狠狠色丁香久久综合频道| 亚洲一区日本| 在线一区亚洲| 欧美福利影院| 一区精品在线| 欧美在线视频日韩| 一区二区日韩| 欧美成人国产| 黄色免费成人| 久久精品在线播放| 亚洲手机成人高清视频| 欧美电影在线免费观看网站 | 久久久久久一区二区| 国产日韩欧美在线看| 亚洲午夜一区二区三区| 亚洲国内欧美| 老色批av在线精品| 在线观看国产成人av片| 麻豆国产va免费精品高清在线| 亚洲欧美另类在线| 国产精品久久久久久久久久尿 | 一本色道久久88亚洲综合88| 欧美99久久| 久久婷婷av| 在线成人免费视频| 久久av红桃一区二区小说| 欧美一区二区福利在线| 国产视频一区在线观看|