首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

CreateCOMObject怎么判断a.ocx是否注册

2012-04-02 
CreateCOMObject如何判断a.ocx是否注册这个是DELPHI的代码,想翻译成BCB,无奈第二句就过不去了。procedure T

CreateCOMObject如何判断a.ocx是否注册
这个是DELPHI的代码,想翻译成BCB,无奈第二句就过不去了。
procedure TForm1.Button1Click(Sender: TObject);
var
  clsID: TGUID;
  obj: IUnknown;
begin
  CLSIDFromProgID('test.test', clsID);
  obj:= CreateCOMObject(clsID);
  if obj <> nil then
  ShowMessage('registered')
  else
  ShowMessage('not registered');
end; 

翻译:
procedure TForm1.Button1Click(Sender: TObject);
{
  TGUID clsID;
  IUnknown obj;//这里就不对了
。。。。

}

我是想问问如何判断是否注册,不是问如何注册。
1、test.test这个是什么意思,是a.ocx文件的ProgID吗?
2、我手动注册了a.ocx,然后没有反注册,直接把a.ocx文件删除了,用CreateCOMObject的方法能否判断a.ocx是否注册成功了。

[解决办法]
1. test.test是ProgID
2. 如果把.ocx文件删除,创建COM对象可能会失败。
3. 这段代码翻译过来,大概是这个样子:

C/C++ code
#include <comobj.hpp>#include <objbase.h>void __fastcall TForm1::Button1Click(TObject *Sender){    GUID clsID;    IUnknown *obj;    CLSIDFromProgID(L"test.test", &clsID);    obj = CreateComObject(clsID);    ShowMessage(obj? "registered": "not registered");}
[解决办法]
未注册CreateComObject会引发异常错误,用Exception捕捉异常吧

热点排行