关于VB和c#语言在Visual Studio 2010中使用非托管ActiveX OCX时的差异

本文关键字:ActiveX OCX 语言 VB Visual 2010 Studio 关于 | 更新日期: 2023-09-27 18:17:40

我正在开发一个交易软件,它连接到Interactive Brokers的ActiveX API。

Interactive Brokers提供了一个VB示例程序,该程序使用ActiveX与我安装的必须登录的软件进行通信。我检查了VB示例的结构,它没有那么复杂,它添加了注册的ActiveX"TWS.OCX"。当我检查示例的引用时,结构是这样的。我们有两个:互操作。TWSLib和AxInterop。TWSLib和我注意到这个例子使用了

 Public WithEvents Tws1 As AxTWSLib.AxTws

通过使用后一个初始化。请检查图片从VB的例子,它有两个交互代理相关的对象或参考准备使用:

一只忙碌的猫http://i.minus.com/inIxvP1TUi2gt.jpg

现在我尝试自己使用c#语言连接到ActiveX OCX。我很快就找到了Interop。在COM参考列表下的TWSLib,但是我没有在哪里找到AxInterop.TWSLib??!!由于AX prename,我猜这意味着将非托管ocx转换为托管ocx,以用于c#或vb。但如何在c#下得到这个呢?实际上,我已经在互操作中使用了一些方法和事件。TWSLib,但现在我有麻烦,以创建所谓的合同实例,我发现VB的例子简单地使用AxInterop下的createContract。而不是在Interop.TWSLib下初始化契约接口。

请查看下面的图片

一只忙碌的猫http://i.minus.com/i3VeHR0ppdKJu.jpg

关于VB和c#语言在Visual Studio 2010中使用非托管ActiveX OCX时的差异

Interop.Xxx.dll程序集是COM服务器接口的。net包装器。当您添加对COM组件的引用或手动运行Tlbimp.exe时,它会自动生成。

AxInterop.Xxx.dll程序集是一个自动生成的Winforms控件(从AxHost派生),它允许您将ActiveX组件放在表单上。当您将控件放在工具箱上或手动运行Aximp.exe实用程序时,它会自动生成。

到目前为止,处理这样一个控件的最简单方法是将其添加到工具箱中。然后,您只需将其拖放到具有设计器的窗体上即可。这会自动添加所需的引用。右键单击工具箱,选择Choose Items。使用Browse选项卡并选择OCX。或者从COM选项卡中选择它的条目。