[转载]【备忘录】Delphi 怎么不注册 dll 就调用 com
资料来源于 DFW 离线包:
=====================================================================
一.方法
lich (2003-10-30 22:16:00)
前言:
如果你的程序中使用了 COM对象或者 OCX控件,
发布程序的时候必须带上相关的 DLL文件或者 OCX文件,
同时还需要注册到系统中,
如果我想让我的程序 Copy & Run, 不需要安装,(现在流行绿色软件嘛)
那么使用下面的方法可以调用未注册的 COM对象或者 OCX控件
我仅仅提供简单的方法,大家共同研究,经验共享
如果COM对象没有在注册表中注册,那么按照下面的方法创建它
function CreateComObjectFromDll(CLSID: TGUID; DllHandle:
THandle): IUnknown;
var
begin
end;
二.例子
下面是用上面的函数从ocx 文件中创建对象的例子
此处创建了一个 MSCOMM32 的串口控件,
调用了此控件的 AboutBox 的对话框,
不管此ocx 文件是否已经注册到系统中,下面的程序都会正常执行
unit Unit1;
interface
uses
type
const
var
function CreateComObjectFromDll(CLSID: TGUID; DllHandle: THandle): IUnknown;
implementation
{$R *.dfm}
function CreateComObjectFromDll(CLSID: TGUID; DllHandle:
THandle): IUnknown;
var
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
end;
end.