如何在 vb.net 中获取 OCX 的位置和文件名
How to get location and file name of OCX in vb.net
我可以很好地加载控件(伪代码):
Set o = CreateObject("DevsoftCustom.CommControl")
现在,我需要找到该 ocx 的文件和目录(这样我就可以读取 ocx 上的版本标记,并从该目录中的配置文件中读取)。
这是如何在 C# 和 vb.net 中完成的? (这个项目在vb.net)
Now, I need to find the file and directory for that ocx
假设您没有使用私有 COM 注册,此类信息在注册表中。
HKCR\CLSID\<SOME-GUID>\LocalServer="<path>"
...或者:
HKCR\<PROG-ID>\CLSID=<GUID> // use this GUID in the example above
或者如果您不想使用注册表,您可以使用本机功能 CLSIDFromProgID()
。 Tell me more...
中 Microsoft Outlook 日期控件 的简单表示
You can use the OLE/COM Object Viewer to view a control's interfaces.
所以在你的情况下,根据程序 ID "DevsoftCustom.CommControl"
在注册表中查找 class ID
即
- 在 HKCR 下,查找密钥 DevsoftCustom.CommControl
- 会有一个子键叫CLSID,注意默认值
- 打开 HKCR\CLSID\ < your-key-from-step-2 >
- 路径将位于名为 LocalServer32
的子项中
使用 Office 示例:
一旦了解了 COM 的工作原理,就很容易在 C# 中实现上述内容。
Isn't there a more direct way to ask the OS based on the object/control name?
据我所知,正如 Damien 提到的那样,COM(包括 OCX)的要点是您不关心某些东西在哪里,您只需要一个实例。
最接近的并行是在 GAC 中有一个 .NET 程序集,您希望在其中创建对象的实例,但又不想担心在同一台计算机上一遍又一遍地部署相同的程序集。当然,GAC 的用途远不止于此,因此比较就此结束。
我可以很好地加载控件(伪代码):
Set o = CreateObject("DevsoftCustom.CommControl")
现在,我需要找到该 ocx 的文件和目录(这样我就可以读取 ocx 上的版本标记,并从该目录中的配置文件中读取)。
这是如何在 C# 和 vb.net 中完成的? (这个项目在vb.net)
Now, I need to find the file and directory for that ocx
假设您没有使用私有 COM 注册,此类信息在注册表中。
HKCR\CLSID\<SOME-GUID>\LocalServer="<path>"
...或者:
HKCR\<PROG-ID>\CLSID=<GUID> // use this GUID in the example above
或者如果您不想使用注册表,您可以使用本机功能 CLSIDFromProgID()
。 Tell me more...
You can use the OLE/COM Object Viewer to view a control's interfaces.
所以在你的情况下,根据程序 ID "DevsoftCustom.CommControl"
在注册表中查找 class ID即
- 在 HKCR 下,查找密钥 DevsoftCustom.CommControl
- 会有一个子键叫CLSID,注意默认值
- 打开 HKCR\CLSID\ < your-key-from-step-2 >
- 路径将位于名为 LocalServer32 的子项中
使用 Office 示例:
一旦了解了 COM 的工作原理,就很容易在 C# 中实现上述内容。
Isn't there a more direct way to ask the OS based on the object/control name?
据我所知,正如 Damien 提到的那样,COM(包括 OCX)的要点是您不关心某些东西在哪里,您只需要一个实例。
最接近的并行是在 GAC 中有一个 .NET 程序集,您希望在其中创建对象的实例,但又不想担心在同一台计算机上一遍又一遍地部署相同的程序集。当然,GAC 的用途远不止于此,因此比较就此结束。