问题是:我一直在检查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)
的行出了什么问题?
答案 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