delphi调用vs2003写COM组件

本文介绍如何使用Delphi调用COM组件,包括通过CreateComObject和ProgIDToClassID函数实例化对象,并展示了如何调用COM接口方法。此外,还提供了在Visual Studio.NET 2003中创建和注册COM组件的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统调用不同协议的硬件。使用COM组件封装不同的协议。

 

使用delphi调用。

使用CreateComObject、ProgIDToClassID函数。注意uses ComObj, com_TLB;

 

com_TLB COM接口声明

unit com_TLB;                               
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface

uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
 

// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:       
//   Type Libraries     : LIBID_xxxx                                     
//   CoClasses          : CLASS_xxxx                                     
//   DISPInterfaces     : DIID_xxxx                                      
//   Non-DISP interfaces: IID_xxxx                                       
// *********************************************************************//
const
  // TypeLibrary Major and minor versions
  comMajorVersion = 1;
  comMinorVersion = 0;

  LIBID_com: TGUID = '{087B4708-AD08-408B-B0EF-7F27B01F60F3}';
  IID_ITest: TGUID = '{3D2BA1A6-D54F-4A3E-8F2C-DB11118A61C8}';
  CLASS_CTest: TGUID = '{F3BEA7D6-B1AB-42DF-98A2-58D1A7BED445}';
type

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                   
// *********************************************************************//
  ITest = interface;

// *********************************************************************//
// Declaration of CoClasses defined in Type Library                      
// (NOTE: Here we map each CoClass to its Default Interface)             
// *********************************************************************//
 // CTest = ITest;


// *********************************************************************//
// Interface: ITest
// Flags:     (0)
// GUID:      {3D2BA1A6-D54F-4A3E-8F2C-DB11118A61C8}
// *********************************************************************//
  ITest = interface(IUnknown)
    ['{3D2BA1A6-D54F-4A3E-8F2C-DB11118A61C8}']
    function Show: HResult; stdcall;
  end;


implementation

 

end.
此文件你可以使用delphi自动生成,导入已注册的指针,然后删掉多余的即可。它主要是接口声明。

 

调用

procedure TForm1.Button2Click(Sender: TObject);
var
    pt : ITest;
begin
    pt := CreateComObject(ProgIDToClassID('com_s.Test.1')) as ITest;
    pt.Show;
    pt := nil;
end;

 

//COM组件的编写就简单了

使用VS.net 2003创建ATL Project,Add Class,ATL中的Simple Object,注册选择自定义接口IUnknown,而且在两个不同的COM组件中的COM接口的方法声明必须一致。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值