- ActiveX 控件
你可以使用Visual Studio自带的工具AxImp.exe将.ocx文件转化为.dll文件。 以下是步骤:
- 打开Visual Studio命令提示符(管理员权限)
- 进入.ocx文件所在的目录
- 运行以下命令: AxImp.exe /source <ocx文件名> /out:<dll文件名> 例子:AxImp.exe /source Test.ocx /out:Test.dll
- 转化完成后,将生成的.dll文件引入到你的C#项目中即可。 希望对你有帮助!
针对.ocx
AxImp.exe /source Test.ocx /out:Test.dll
针对.dll
AxImp.exe /source Test.dll /out:NewTest.dll
- com 组件
tlbimp Test.dll /out:NewTest.dll
参考:
c# 调用com组件 - db's jim - 博客园 (cnblogs.com)
指定.NET Framework 版本:
查看默认tlbimp.exe的工具,默认生成为 .net framework 4.0
where tlbimp
本机 tlbimp 有:
- v10.0:导出.net framework 4.0
- v7.0: 导出.net framework 2.0
导出生成 .net framework 2.0 版本
- 直接定位文件v7.0 tlbimp.exe 文件夹,示例
- dll直接导出在 v7.0 文件夹内
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\x64>tlbimp "C:\*.dll" /out:*.dll
导出结果: .net framework 2.0
- com 查看器
oleview.exe
OLE/COM 对象查看器 - Win32 apps | Microsoft Learn
- com 的 CLISD
windows 注册表中 regedit,调用哪个方法,则使用对应的 CLISD
- com 的注册与注销
注册com
regsvr32 *.dll # 支持相对路径
regsvr32 X:\\XXCOM.dll # X:跟dll的绝对路径
卸载com
regsvr32 /u *.dll # 支持相对路径
regsvr32 /u X:\\XXCOM.dll # X:跟dll的绝对路径
- com 注册表可视化查看器
- 纯c调用COM
Articles by Jeff Glatt (Articles: 12) - CodeProject
- c#
方式1:
直接引入com导出的dll,按正常c#程序处理,类实例化对应对象即可,无需关心com对应的clsids
方式2: 依据clsids,创建对象,并按已知对象类型,进行强转
machine = (JHMachineInProcess)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("BEB4B3C8-CCD6-4F37-97E6-21DD51BD2F23")));
方式3:一句clsids对应的服务名称 存在问题
CNC8070_VariablesClass comObject = (CNC8070_VariablesClass)Activator.CreateInstance(Type.GetTypeFromProgID("cnc8070.variables"));
C# .NET 和 COM - 咸鱼翻身? - 博客园 (cnblogs.com)
com 学习
资料
COM 互操作示例:.NET 客户端和 COM 服务器 - .NET Framework | Microsoft Learn
组件对象模型 (COM) - Win32 apps | Microsoft Learn
在 Windows 应用中使用 COM - Win32 apps | Microsoft Learn
COM win32 api
组件对象模型 (COM) - Win32 apps | Microsoft Learn
c++ 示例
- vs 服务端,及调用示例
一个完整的COM 示例Demo(C++语言描述)_c++编写的opc da demo-CSDN博客
- mingw 客户端