系统调用不同协议的硬件。使用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接口的方法声明必须一致。