ocx控件中有几个com类,注册ocx后,用CoXXX.Create创建一个对象时提示没有注册类型,但其他几个com类没有问题,请问有可能是什么原因?
解决方案 »
- 怎样实现Delphi7的IDE的标题栏中显示打开工程的完整路径?
- 代码画图
- 请大家帮我看看,这是什么问题
- 在线等待,急急急!!!!!!!!!!!!!
- 怎么才能让一个表的某一行中的一些字段成为DBGrid中的一列,,,,求助!!
- 怎么利用TStoredProc中的◎RETURN_VALUE得到存储过程执行的状态信息?
- dephi6的问题
- dxdbgrid 滚动条的颜色如何改变?
- 怎样判断label中的text是否已超出label的显示范围?
- 五筆字型輸入法 For W2000
- API HOoK问题
- VirtualTrees控件里如果设置多级节点如何最佳设计数据库(例如:高一年级,高一01班,高一01班全体,高一01班在籍)
如果COM对象没有在注册表中注册,那么按照下面的方法创建它function CreateComObjectFromDll(CLSID: TGUID; DllHandle: THandle): IUnknown;
var
Factory: IClassFactory;
DllGetClassObject: function(const CLSID, IID: TGUID; var Obj): HResult;
stdcall;
begin
DllGetClassObject := GetProcAddress(DllHandle, 'DllGetClassObject');
if Assigned(DllGetClassObject) then
begin
DllGetClassObject(CLSID, IClassFactory, Factory);
Factory.CreateInstance(nil, IUnknown, Result);
end;
end;
uses
OLECtl, Windows, Dialogs;
var
OCXHand: THandle;
RegFunc: TDllRegisterServer; //add to the uses clause
begin
OCXHand:= LoadLibrary('c:\windows\system\test.ocx');
RegFunc:= GetProcAddress(OCXHand, 'DllRegisterServer'); //case sensitive
if RegFunc <> 0 then
RegFunc
else
ShowMessage('Error!')
FreeLibrary(OCXHand);
// You can the same way unregister the OCX:
// replace 'DllRegisterServer' by 'DllUnregisterServer'
end.
OleInitialize(nil);finalization
try
OleUninitialize;
except
end;