2013-12-18 47 views
1

創建ActiveXObject,我在下面的一行代碼:從GUID

var ScreenRecorder = new ActiveXObject('CCScreenRecorder.ScreenRecorder'); 

的問題是,我有這個
(每個版本的2項,不要問我爲什麼 - 這是我需要處理的事實),

所以我想從GUID創建ActiveXObject

我試圖做的:

document.createElement('<OBJ' + 'ECT ID="ScreenRecorderWrapper" CLA' + 'SSID="CL' + 'SID:37CCF998-3BB7-' + '4F8A-9D9F-EF391543E94A"></OB' + 'JECT>'); 
var ScreenRecorder = ScreenRecorderWrapper; 

但問題是,ScreenRecorderWrapper只會SetTimeout或其他一些操作之後被定義。

我可以從它的GUID得到ActiveXObject而不是它的名字嗎?
喜歡的東西:

var ScreenRecorder = new ActiveXObject('37CCF668-3BB7-4F8A-9D9F-EF391543E94A'); 
+0

我的回答有幫助嗎? – manuell

回答

0

ActiveXObject需要一個ProgID,但是,你可以使用依賴於版本的ProgID的,而不是一個獨立版本 - ProgID。

與版本相關的ProgID通常具有附加到版本無關的ProgID的版本號。

在這種情況下,獨立於版本的ProgID是'CCScreenRecorder.ScreenRecorder',版本相關的ProgID將類似於'CCScreenRecorder.ScreenRecorder.1''CCScreenRecorder.ScreenRecorder.2'

請注意,如果安裝了錯誤的版本,則使用依賴於版本的ProgID可能會失敗。您可能需要先嚐試版本相關的ProgID,然後回退到獨立於版本的ProgID。

+0

progid對於它們都是一樣的,它們都是CCScreenRecorder.ScreenRecorder,我看不到版本差異。 –

+0

@DorCohen這是[*版本獨立*](http://msdn.microsoft.com/en-us/library/windows/desktop/ms694514(v = vs.85).aspx)progid。 [版本依賴](http://msdn.microsoft.com/en-us/library/windows/desktop/dd542719(v = vs.85).aspx)密鑰分別存儲在註冊表中,並應具有不同的名稱爲不同的CLSID。 (如果版本相關的progid是相同的,那麼你有點被洗淨。) –

0

使用註冊表從CLSID獲取ProgId。 在JS中閱讀註冊表是可能的,通過「Shell」ActiveX

var shellObj = new ActiveXObject("WScript.Shell"); 
var clsid = "37CCF668-3BB7-4F8A-9D9F-EF391543E94A"; 
var progid = shellObj.RegRead("HKEY_CLASSES_ROOT\\CLSID\\{"+clsid+"}\\ProgID\\"); 
var ScreenRecorder = new ActiveXObject(progid); 
+0

請添加一些解釋。 – DontVoteMeDown

+0

@DontVoteMeDown完成。 – manuell

+0

你的解決方案並沒有幫助我,因爲兩個GUID都返回我相同的progid。 –