从dll

时间:2015-08-11 17:36:11

标签: dll com

问题是:我一直在检查kaspersky小工具,发现它使用了COM对象,因为我可以看到在小工具的主html文件中声明,所以我通过CLSID在注册表中查找并得到了" gadget.dll"位于kaspersky instalation文件夹中。 Mi的兴趣是以与他们相同的方式调用特定的卡巴斯基应用标签。检查小工具文件夹中的.js文件,我可以看到我需要使用的方法的语法,即" OpenWindow(WindowID)"并且WindowID也在另一个文件中指定。 我一直在用简单的VisualBasic脚本尝试这个:

Set kavCOM = WScript.CreateObject("KISGadgetCOM.COMClass.1")
kavCOM.OpenWindow(1)
应该调用主窗口的

还尝试了一个AutoHotKey脚本:

^!k::
{
kavCOM := ComObjCreate("{ED6E691B-E662-4aae-AECC-705C9B014C75}")
kavCOM.OpenWindow(1)
}

它们都导致错误:80004004(操作中止)在" kavCOM.OpenWindow(1)

的行

出了什么问题?

1 个答案:

答案 0 :(得分:0)

好的,问题是对象实例化延迟,我通过添加解决了它     WScript.Sleep 1000 就在调用“OpenWindow”方法之前。

我的最终(更精细)解决方案,以便它不会等待超过需要:

Dim kavCOM, Cnt
Cnt = 0
Set kavCOM = CreateObject("KISGadgetCOM.COMClass.1")
On Error Resume Next
Do
 Cnt = Cnt + 1
 kavCOM.OpenWindow(1)
 If Err = 0 Then 
  Exit Do
 Else
  Err.Clear
 End If
 WScript.Sleep 10
Loop
On Error Goto 0
MsgBox "It took " & 10*Cnt & " miliseconds."
Set kavCOM = Nothing