C#调用c++编写的COM组件(供自己使用方便)

转自:https://msdn.microsoft.com/zh-cn/library/8ccdh774.aspx

Aximp.exe(Windows 窗体 ActiveX 控件导入程序)

.NET Framework (current version)
 

ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。

Windows 窗体只能承载 Windows 窗体控件,即从 Control 派生的类。 Aximp.exe 生成可承载于 Windows 窗体上的 ActiveX 控件的包装器类。 这使你得以使用适用于其他 Windows 窗体控件的同一设计时支持和编程方法。

若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装器控件。 此包装器控件包含基础 ActiveX 控件的一个实例。 它知道如何与 ActiveX 控件通信,但它显示为 Windows 窗体控件。 这个生成的控件承载 ActiveX 控件并将其属性、方法和事件作为生成的控件的属性、方法和事件公开。

此工具会自动随 Visual Studio 一起安装。 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示)。 有关详细信息,请参阅 Visual Studio 开发人员命令提示

在命令提示符处,键入以下内容:

aximp [options]{file.dll | file.ocx} //注意运行命令要以管理员身份运行

参数

说明

file

包含要转换的 ActiveX 控件的源文件的名称。 文件参数中必须具有扩展名 .dll 或 .ocx。

选项

说明

/delaysign

指定 Aximp.exe 使用延迟的签名对生成的控件进行签名。 此选项必须与 /keycontainer:/keyfile:/publickey: 选项一起指定。 有关延迟签名过程的详细信息,请参阅延迟为程序集签名

/help

显示该工具的命令语法和选项。

/keycontainer: containerName

借助在 containerName 指定的密钥容器中找到的公钥/私钥对,用强名称对生成的控件进行签名。

/keyfile: filename

借助在 filename 中找到的发行者的正式公钥/私钥对,用强名称对生成的控件进行签名。

/nologo

取消显示 Microsoft 启动版权标志。

/out: filename

指定要创建的程序集的名称。

/publickey: filename

借助在 filename 指定的文件中找到的公钥,用强名称对生成的控件进行签名。

/rcw: filename

使用指定的运行时可调用包装器,而不用生成新的包装器。 你可以指定多个实例。 当前目录用于相对路径。 有关详细信息,请参阅运行时可调用包装

/silent

取消显示成功消息。

/source

生成 Windows 窗体包装器的 C# 源代码。

/verbose

指定详细模式;显示更多进度信息。

/?

显示该工具的命令语法和选项。

Aximp.exe 一次转换整个 ActiveX 控件类型库,并生成一组程序集,这些程序集包含在原始类型库中定义的类型的公共语言运行时元数据和控件实现。 生成的文件按照下面的模式命名:

COM 类型的公共语言运行时代理:progid.dll

ActiveX 控件的 Windows 窗体代理(其中 Ax 表示 ActiveX):Axprogid.dll

System_CAPS_note说明

如果 ActiveX 控件的成员名称与 .NET Framework 中定义的名称匹配,则 Aximp.exe 在创建 AxHost 派生类时,将在成员名称前加上前缀“Ctl”。 例如,如果 ActiveX 控件有一个名为“Layout”的成员,由于在 .NET Framework 中定义了 Layout 事件,因此该成员在 AxHost 派生类中将重命名为“CtlLayout”。

可以使用类似 Ildasm.exe(IL 反汇编程序) 的工具检查这些生成的文件。

不支持使用 Aximp.exe 为 ActiveX WebBrowser 控件 (shdocvw.dll) 生成 .NET 程序集。

在对 shdocvw.dll 运行 Aximp.exe 时,该工具始终会在运行它的目录中创建另一个名为 shdocvw.dll 的文件。 如果将此生成文件放在 Documents and Settings 目录下,则会导致 Microsoft Internet Explorer 和 Windows 资源管理器出现问题。 重启计算机时,Windows 会先在 Documents and Settings 目录查找 shdocvw.dll 的副本,然后再在 system32 目录查找。 它将使用在 Documents and Settings 目录中找到的副本,并尝试加载托管的包装器。 由于 Internet Explorer 和 Windows 资源管理器依赖于 system32 目录中的 shdocvw.dll 版本中的呈现引擎,因此它们将无法正常工作。 如果出现此问题,请在 Documents and Settings 目录中删除 shdocvw.dll 的副本,然后重启计算机。

通过对 shdocvw.dll 使用 Aximp.exe 来创建用于应用程序开发的 .NET 程序集也会导致问题。 在这种情况下,应用程序将同时加载 shdocvw.dll 的系统版本和生成版本,并可能为系统版本赋予更高的优先级。 此时,如果尝试在 WebBrowser ActiveX 控件内加载网页,用户可能会收到打开/保存对话框提示。 当用户单击“打开”时,将在 Internet Explorer 中打开该网页。 此情况只出现在运行 Internet Explorer 版本 6 或更早版本的计算机上。 若要防止此问题,请使用托管 WebBrowser 控件或使用 Visual Studio 生成托管的 shdocvw.dll,如如何:添加对类型库的引用中所述。

示例

下面的命令为媒体播放器控件 msdxm.ocx 生成 MediaPlayer.dll 和 AxMediaPlayer.dll。

aximp c:\systemroot\system32\msdxm.ocx
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值