Jon*_*ica 2 .net c# vb.net winapi ocx
我可以很好地加载控件(伪代码):
Set o = CreateObject("DevsoftCustom.CommControl")
Run Code Online (Sandbox Code Playgroud)
现在,我需要找到该 ocx 的文件和目录(以便我可以读取 ocx 上的版本戳,并从该目录中的配置文件中读取)。
这是如何在 C# 和 vb.net 中完成的?(这个项目在vb.net)
现在,我需要找到那个 ocx 的文件和目录
假设您没有使用私有 COM 注册,则此类信息在注册表中。
HKCR\CLSID\<SOME-GUID>\LocalServer="<path>"
Run Code Online (Sandbox Code Playgroud)
...或者:
HKCR\<PROG-ID>\CLSID=<GUID> // use this GUID in the example above
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想使用注册表,则可以使用本机功能CLSIDFromProgID()
。告诉我更多...
下面是一个简单的表示的Microsoft Outlook日期控制在OLE / COM对象查看。
您可以使用 OLE/COM 对象查看器来查看控件的接口。
因此,在您的情况下,根据程序 ID “DevsoftCustom.CommControl”在注册表中查找类 ID
IE
使用 Office 示例:
一旦你知道 COM 是如何工作的,就很容易在 c# 中实现上面的内容。
没有更直接的方法可以根据对象/控件名称询问操作系统吗?
并不是我知道并且正如 Damien 所提到的,COM(包括 OCX)的重点是您不关心某些东西在哪里,您只需要一个实例。
最接近的并行是在 GAC 中有一个 .NET 程序集,您希望在其中创建对象的实例,但又不想担心在同一台计算机上一遍又一遍地部署相同的程序集。当然,GAC 的用途远不止于此,因此比较就到此为止。