在自己建立的自动化服务器中如何处理事件(100分)

  • 主题发起人 主题发起人 clark
  • 开始时间 开始时间
C

clark

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi的Auotomation object向导建立自动化服务器(选择generate event code选项)
得到了事件接口,但是,事件接口是DispInterface类型,没有提供IDispatch类型的接口
,如何在客户端进行连接,是否必须自己用如下的接口实现,并且编写QueryInterface和
Invoke等方法实现(这种方法我已经知道)。但是,觉得何不方便。
TMySink=class(TObject,IUnknown,IDispatch)
.....
end;

许多自动化服务器同时提供了IDispatch接口的事件定义ISomeSink,可以用
TMySink=class(TAutoIntfObject,ISomeSink)
.......
end;
和服务器进行连接。

在Delphi中如何生成类似的接口?
在Delphi中自动化向导生成的事件接口是DispInterface类型IDispSomeSink,只能通过
第dispid进行调用吗?如何在客户端利用名字进行调用?如何在客户端利用
DispInterface这种调度接口。
 
why on one answer?Experts pls!
 
为什模无人回答?
是不是分太少了?我可以再加200分。
 
DELPHI的自动化服务器对象向导只建了一个接口,里面什么也没有,需要你自已增加事件和方法
 
你在客户端调用就是你定义的方法和属性
 
有本书叫,大概叫Delphi 深入COM编程里说得很清楚,你可以去看看。
 
情结束或继续
 
请继续或结束
 
请继续或结束
 
实现事件是客户端提供一个借口,然后通过InterfaceConnect 方法连接到服务器,然后
服务器调用客户端接口。不过在Delphi 5中提供了一个新的机制,就是可以把服务器事件
对象引入到控件面板中。假设你的服务器的类型库为Chartserver.tlb。
选择Delphi菜单的 Project | Import Type Library 项,在Import Type Library窗口
中点击 Add 按钮,选择工程目录中的ChartServer.tlb。在 Class Name 列表中就会出
现 TChartServer,将复选框Generate Component Warpper 选中。
然后点击 Install 按钮。在 Install 窗口中选择 Into New Package页面,在
File Name框中输入 ChartServer 后点击 OK 按钮,Delphi就会建立工程
ChartServer.dpk:
点击ChartServer.dpk窗口中的 Compile 按钮,Delphi就会在控件面板的 ActiveX 页
面下添加一个 ChartServer 控件按钮。
 
多人接受答案了。
 
后退
顶部