大家看看这个技术问题怎么解决?
是一个调用进程外COM组件的程序,大家看看为什么会这样.
CoInitialize(NULL);
Sigwave::_DFormPtr pt1;
HRESULT hr;
CLSID clsid;
CLSIDFromProgID(OLESTR("Sigwave.Document"),&clsid);//此处,clsid值是正确的。
hr=CoCreateInstance(clsid,
NULL,
CLSCTX_LOCAL_SERVER,
__uuidof(Sigwave::_DForm),
(void**)&pt1);
执行完CoCreateInstance后,组件所在程序就打开了,但在后台,可是此时返回值不是0,而是“不支持此接口”,问题就是这样,大家帮忙分析一下。
问题点数:0、回复次数:6Top
1 楼firmbird(firmbird)回复于 2005-04-04 23:04:36 得分 0
用IID_IUnknown代替__uuidof(Sigwave::_DForm)能不能调用成功Top
2 楼sinall()回复于 2005-04-05 14:04:57 得分 0
对,先试试IUnknown能否能否成功。
CoInitialize(NULL);
IUnknown pt1;
HRESULT hr;
CLSID clsid;
CLSIDFromProgID(OLESTR("Sigwave.Document"),&clsid);//此处,clsid值是正确的。
hr=CoCreateInstance(clsid,
NULL,
CLSCTX_ALL,
IID_IUnknown,
(void**)&pt1);
Top
3 楼baiyujia(byj)回复于 2005-04-05 14:19:30 得分 0
能成功,可是指针ptl的具体意义是什么呢?Top
4 楼sjcode(愚者)回复于 2005-04-05 14:23:31 得分 0
然后你在QueryInterface成你的Sigware接口指针。
Top
5 楼baiyujia(byj)回复于 2005-04-05 15:40:45 得分 0
如果向下面这样自己查询自己就会出现错误:
Unhandled exception in sigWave.exe(KERNEL32.DLL):0xE06D7363:Microsoft C++ Exception.
pt1->QueryInterface(__uuidof(Cadence::_DFORM),(void**)&pt1);
如果利用该接口去查询其他的接口,不出现错误,但是返回HRESULT值的意义是“不支持该接口”。
Top
6 楼firmbird(firmbird)回复于 2005-04-05 16:09:24 得分 0
(__uuidof(Cadence::_DFORM)有问题,直接定义一个IID_DFORM试试吧Top




