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

发布于 2024-12-20 22:19:23 字数 921 浏览 0 评论 0原文

我正在开发一个交易软件,该软件连接到盈透证券的 ActiveX API。

Interactive Brokers提供了一个VB示例程序,它使用ActiveX与我安装的软件进行通信,并且必须登录。我检查了VB示例的结构,它并不复杂,它添加了注册的ActiveX“TWS.OCX”。当我检查示例的参考时,结构是这样的。我们有两个:Interop.TWSLib 和 AxInterop.TWSLib,我注意到该示例

 Public WithEvents Tws1 As AxTWSLib.AxTws

使用后一个来启动。 请检查 VB 示例中的图片,它有两个与交互式代理相关的对象或参考可供使用:

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

现在我尝试自己使用C#语言来连接ActiveX OCX。我很快在COM参考列表下找到了Interop.TWSLib,但我没有在哪里找到AxInterop.TWSLib?!!由于 AX 名称,我猜测这意味着将非托管 ocx 转换为托管 ocx 以用于 c# 或 vb。但是我怎样才能在c#下得到这个呢? 实际上,我已经在 Interop.TWSLib 中使用了一些方法和事件,但现在我在创建所谓的 CONTRACT 实例时遇到了麻烦,我发现 VB 示例只是使用 AxInterop.TWSLib 下的 createContract 而不是初始化 Interop.TWSLib 下的合约接口。

请查看下面的图片

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

I am working on a trading software which connects to the ActiveX API from Interactive Brokers.

Interactive Brokers provides a VB example program which use ActiveX to communicate to the software I installed and must be logged in. I checked the structure of the VB example which is not so complicated that it added the registered ActiveX "TWS.OCX". When I check the reference of the example, the structure is like this. We have two: Interop.TWSLib and AxInterop.TWSLib and I noticed that the example use

 Public WithEvents Tws1 As AxTWSLib.AxTws

to initiate by using the later one.
Please check the picture from VB example it has two interactive brokers related object or reference ready to be used:

a busy cat http://i.minus.com/inIxvP1TUi2gt.jpg

Now I tried myself to use C# language to connect tot the ActiveX OCX. I quickly found the Interop.TWSLib under COM reference list and but I have no where to find the AxInterop.TWSLib??!! Due to the AX prename, i am guessing that it means convert the unmanaged ocx to managed one to be used for c# or vb. But how could I get this one under c#?
Acturally, I already used some method and event within the Interop.TWSLib but now I am having trouble to create socalled CONTRACT instance and I found the VB example simply use the createContract under AxInterop.TWSLib instead of iniatializing the contract interface under the Interop.TWSLib.

Please check the picture below

a busy cat http://i.minus.com/i3VeHR0ppdKJu.jpg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

命比纸薄 2024-12-27 22:19:23

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

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

到目前为止,处理此类控件的最简单方法是将其添加到工具箱中。然后,您只需使用设计器将其拖放到表单上即可。这会自动添加所需的引用。右键单击工具箱,选择选择项目。使用“浏览”选项卡并选择 OCX。或者从 COM 选项卡中选择其条目。

The Interop.Xxx.dll assembly is a .NET wrapper for the COM server interface. It is generated automatically when you add a reference to the COM component or when you run the Tlbimp.exe by hand.

The AxInterop.Xxx.dll assembly is an auto-generated Winforms control (derived from AxHost) that allows you to put the ActiveX component on a form. It is auto-generated when you put the control on the toolbox or when you run the Aximp.exe utility by hand.

By far the simplest way to wrangle such a control is to add to the toolbox. Which then lets you simply drag and drop it on a form with the designer. That automatically adds the required references. Right-click the toolbox, select Choose Items. Use the Browse tab and select the OCX. Or pick its entry from the COM tab.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文