从GUID创建ActiveXObject

时间:2013-12-18 14:08:43

标签: javascript internet-explorer com activex activexobject

我的代码中有以下行:

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');

2 个答案:

答案 0 :(得分:0)

ActiveXObject需要ProgID,但是,您可以使用依赖于版本的ProgID而不是与版本无关的ProgID。

版本相关的ProgID通常具有附加到版本无关的ProgID的版本号。

在这种情况下,与版本无关的ProgID为'CCScreenRecorder.ScreenRecorder',版本相关的ProgID类似于'CCScreenRecorder.ScreenRecorder.1''CCScreenRecorder.ScreenRecorder.2'

请注意,如果安装了错误的版本,使用依赖于版本的ProgID可能会失败。您可能希望首先尝试依赖于版本的ProgID,然后回退到与版本无关的ProgID。

答案 1 :(得分:0)

使用注册表从CLSID获取ProgId。 通过“Shell”ActiveX

可以在JS中读取注册表
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 );
相关问题