一个接口调用的问题,急呀,在线等。立即结帐。

bearperson 2005-11-12 11:09:16
怎么用SocketConnection1调用TLB中自己定义的IDispatch接口,DCOM如下: DCOMConnection1.GetServer.QueryInterface(IID_IBODataPersistent, MyInterface2);
MyInterface2.getvoList('', '' , oo);
在SocketConnection1中呢,帮帮忙呀。
...全文
146 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bearperson 2005-11-12
  • 打赏
  • 举报
回复
SocketConnection1.Open;

SocketConnection1.GetServer.QueryInterface(IID_IDataPersistent, MyInterface);

if MyInterface = nil then
begin
ShowMessage('error');
exit;
end;
弹出对话框了。
bearperson 2005-11-12
  • 打赏
  • 举报
回复

SocketConnection1.GetServer.QueryInterface(IID_IDataPersistent, MyInterface);
返回的针指是空的。

bearperson 2005-11-12
  • 打赏
  • 举报
回复
SocketConnection1.GetServer.QueryInterface(MyInterfaceGUID,Myinterface);


这种方法可以吗? 好象调用时不行呀。
XuDunYu 2005-11-12
  • 打赏
  • 举报
回复
一样啊
SocketConnection1.GetServer.QueryInterface(MyInterfaceGUID,Myinterface);
bearperson 2005-11-12
  • 打赏
  • 举报
回复
halfdream(哈欠)
可能是正确的。确实不可以。只有试着改SOCKET程序了。不知道是否有高手做过。
bearperson 2005-11-12
  • 打赏
  • 举报
回复
谢谢两位帮助。我试试了。
wizardqi 2005-11-12
  • 打赏
  • 举报
回复
如果以下语句
DCOMConnection1.GetServer.QueryInterface(IID_IBODataPersistent, MyInterface2);
可以正确返回引用的话,那么你可以试着把你的远程模块的注册中这样试试
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
EnableSocketTransport(YourClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
DisableSocketTransport(YourClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
halfdream 2005-11-12
  • 打赏
  • 举报
回复
TSocketConnection仅提供了实现了IAppserver的COM对象简单DISPATCH方式调用.
象查询接口这样更底层的IUNKNOWN层的调用,不会传递到远程去.

楼主另想办法吧.

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧