返回列表 发帖

[问题求助] vbs如何获取所有本机可用的com组件名称

本帖最后由 pcl_test 于 2016-10-9 11:06 编辑

比如 : set  ws = CreateObject("sapi.spvoice")  中的"sapi.spvoice"中这是对象名称是怎么得到的。也就是我想明白windows中所有库的对象名称。怎么办呢。我百度了。但是不是很全。比如说用vbs发信件的时候用的到的对象名称是什么。出来常用的wscript.shell  scripting.filesystemobject  等等的名称还有哪些。我总觉得我只会这两种了。觉得vbs的功能我总是把她发挥不到最大。求大神指点。复制粘贴的。谢谢!!!!

回复 6# CrLf


    恩恩,非常感谢大神

TOP

回复 5# ghost-jason


    参考 3 楼,试试
listcom().grep(/Tencent|QQ|TX/)COPY
listcom().grep(/Sogou/)COPY
再不行换其他关键词试试

TOP

回复 3# CrLf


    大牛,比如我想获得qq,或者搜狗浏览器,或者任何一个我安装在电脑上的应用程序的组件是我该怎么做,就像应用程序是不是没有组件啊求指导。谢谢大神了

TOP

回复 2# CrLf


    谢谢大牛了。 :) :)

TOP

假如需要找和 excel 相关的组件,我是这样做的:
1、打开 js.exe(JScript控制台 v1.1
2、输入这个命令:listcom().grep(/excel/i)
如果要输出到文件,就输入这个:
$Out = create('Excel相关的组件.txt',true)
listcom().grep(/excel/i)
exit()COPY

TOP

以前写过这个东西:http://bbs.bathome.net/thread-30886-1-1.html,把关键部分提取出来,存为 listcom.js,运行即可得到本机可用的com组件.txt
var fso = new ActiveXObject('Scripting.FileSystemObject')
var ts = fso.CreateTextFile('本机可用的com组件.txt',true)
ts.Write(listcom().join('\r\n'))
function listcom(){
//列举本机所有的 com 组件
//主要代码修改自 http://hi.baidu.com/badguest/item/b091cc5b61b99c14db163563
var retArr=[]
var ws = new ActiveXObject('WScript.Shell')
var dict = new ActiveXObject('Scripting.Dictionary')
var oLoc=new ActiveXObject("WbemScripting.SWbemLocator")
var HKCR=0x80000000
var oReg=oLoc.ConnectServer(null,"root\\default").Get("StdRegProv")
var oMethod=oReg.Methods_("EnumKey")
var oInParam=oMethod.InParameters.SpawnInstance_()
oInParam.hDefKey=HKCR
oInParam.sSubKeyName=''
var NameAndType=oReg.ExecMethod_(oMethod.Name,oInParam)
var arrSubKeys=NameAndType.sNames.toArray()
//~列举HKEY_CLASSES_ROOT中所有键
for(var i=0;i<arrSubKeys.length;i++){
var key=arrSubKeys[i]
if(key.search(/..\./)<0)continue
if(key.search(/..\..*\./)>0){
/*~there's a dot. Is there another one?
yes, so this name is version specific
check whether we already have a
version-independent progid! */
independent = key.replace(/.+?$/,'')
if (!dict.Exists(independent)){
//~no, store it
dict.Add(key, 0)
}
}else{
/*~this one is version-independent.
do we already have a version-dependent
progID in store?*/
var vdpid = ""
for(var element in dict){
if (element.length>key.length){
if (element.substring(key.length)==key + "."){
//~yes, return name
vdpid = element
break
}
}
}
//~any version dependent progID found?
if (vdpid.length) {
//~yes, replace
dict.Remove(vdpid)
dict.Add(key, '')
}else{
//~no, add to store
dict.Add(key, '')
}
}
}
var arr = new VBArray(dict.Keys()).toArray();
for (var i=0;i<arr.length;i++){
retArr.push(arr[i])
}
return retArr
}COPY

TOP

返回列表