如何在Windows上使用OLE构建动态(ActiveX)对话框并与其进行交互?

问题描述:

我已经查看了Microsoft Forms 2.0对象库(FM20.DLL)和Microsoft Windows公共控件(comctl32.dll),因为它们都存在(我认为)作为我系统上的OLE提供程序。 (我在Excel中通过在VBA中打开它们来与他们的成员一起查看这些库)并在VBA中与他们一起玩。如何在Windows上使用OLE构建动态(ActiveX)对话框并与其进行交互?

我更大的问题是,我不明白库本身和ActiveX之间的关系 - 我怎么知道哪些成员可以创建为ActiveX对象? (例如,您可以创建“Excel.Application”,但不能创建“MSForms.UserForm”)。我希望能够使用某个库脚本(使用OLE)表单,显示它,响应事件等。我希望使用已有的东西(如上面提到的库,如果可能的话)防止必须安装额外的软件。

如果你可以举一个例子(用任何语言)让我开始,那将是非常有用的,非常感谢。

+0

很难理解这个问题,它永远不是一个实际问题。 ActiveX控件是那些在视觉设计师的工具箱中显示的控件。是的,Forms 2.0有一个,它内置在Excel中,可以让你做所有你想做的事情。听起来像你还没有找到它。 –

+0

@HansPassant感谢您根据您的评论和一个名为ActiveXHelper的工具,设法找到例如“Forms.Frame.1”作为我可以创建的ActiveX对象。但是,我怎么会知道这是对象的名称,而不是“MSForms.Frame”或其他?我猜你需要访问ActiveX注册表来告诉你这些事情? – mydoghasworms

根据HansPassant的评论,有效的是使用MS Forms 2.0,它有一个ActiveX对象“Forms.Frame.1”,它可以在我的程序中创建和使用。

我发现了一个名为的程序,ActiveXHelper,它允许查看系统上所有已注册的ActiveX对象。