Creating COM using ATL in C++ from VS2012
尝试在 Visual Studio 2012 中使用 ATL 创建简单的 COM 库。 我愿意:
1 2 3 4 5 6
New ATL Project
Welcome to the ATL Project Wizard
Next
Application Settings – no change ( DLL)
Next
Finish
有很多文件:
但是我发现那里缺少一些关于参数选择的东西,比如 in、out、retval。
手动编写 IDL,然后更新类以匹配。
COM 方法通过接口公开,这些接口由对象实现。您需要先使用类似的向导添加对象(添加 ATL 简单对象)。然后向接口添加方法,这些方法将为您创建。
添加一个新类
填写字段
在这一步之后SomeObject.h ,SomeObject.cpp 文件将被创建并添加到您的解决方案中,ISomeObject 接口声明将被添加到.idl 文件中。
进入类视图(默认组合ctrl shift C),选择ISomeObject ,添加新方法
在这一步之后,someMethod 将被添加到 .idl 文件、.h 文件和 .cpp 文件中。您所要做的就是在 .cpp 文件中编写 someMethod 的实现。
我已经使用您的推荐创建了 dll,并在 32 位 WinXP 操作系统中注册了 wit regsvr32,但我找不到它的注册信息。我使用来自 powershellmagazine.com/2013/06/27/… 的 PowerShell 脚本
它在 HKEY_CLASSES_ROOT//ATLProject1.SomeProject.1 键中。 PS1 脚本不正确。它应该匹配 ^//w+//.//w+(?:$|.//d+) 。
好的,我有 ATLProject1.SomeProject.1 。我想 ATLProject1.SomeProject 是我们在 ProgID 中输入的内容,但最后的 1 是什么意思?
它表示 COM 对象的版本。 ATLProject1.SomeProject//CurVer = ATLProject1.SomeProject.1 、ATLProject1.SomeProject.1//CLSID = {GUID} 。因此,可以在脚本中创建像 var o = new ActiveXObject(‘ATLProject1.SomeProject’); 这样的对象,并且您已经获得了 COM 对象的实际(当前)版本。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/268911.html