簡體   English   中英

如何在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中)

現在,我需要找到該ocx的文件和目錄

假設您未使用私有COM注冊,則此類信息在注冊表中。

HKCR\CLSID\<SOME-GUID>\LocalServer="<path>"

...要么:

HKCR\<PROG-ID>\CLSID=<GUID>  // use this GUID in the example above

或者,如果您不想使用注冊表,則可以使用本機函數CLSIDFromProgID() 告訴我更多...

這是OLE / COM Object ViewerMicrosoft Outlook日期控件的簡單表示。

您可以使用OLE / COM對象查看器來查看控件的接口。

在此處輸入圖片說明

因此,在您的情況下,請根據編ID “ DevsoftCustom.CommControl”在注冊表中查找類ID。

  1. HKCR下 ,找到鍵DevsoftCustom.CommControl
  2. 將有一個名為CLSID的子項,請注意默認值
  3. 打開HKCR \\ CLSID \\ < 步驟2中的密鑰 >
  4. 該路徑將在名為LocalServer32的子項中

使用Office示例:

在此處輸入圖片說明

一旦了解了COM的工作原理,就可以輕松地在c#中實現上述功能。

是否沒有更直接的方法可以根據對象/控件名稱詢問操作系統?

並不是我所知道的,正如Damien所提到的那樣,COM(包括OCX)的要點是,您不必關心某個地方,而只需要一個實例。

最接近的並行是在GAC中具有一個.NET程序集,您想在其中創建對象的實例,但又不必擔心一遍又一遍地在同一台計算機上部署同一程序集。 當然,GAC的作用遠不止於此,所以比較就在那里結束了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM