VB/VBS的COM组件调用。
在历史较长且比较有名的软件中,有很多都支持类VB/VBS/VBA语法,由此可见当年微软的威势!特别是VBS,如果没有了对COM/OCX组件的调用能力,立马就残了。废话少说,上代码:
调用COM组件:
Function doSomething(message, objects)
On Error Resume Next
Dim enovia, jsonString
Set enovia = CreateObject("Custom.Interface.Enovia.Start")
If 0 <> Err.number Then
MsgBox Err.Description & " : Custom.Interface.Enovia.Start, 其在耶?注册耶?"
Exit Function
End If
jsonString = getJsonString(message, objects)
export getEnvironmentValue("PROCESS", "TEMP") & "\js.to", jsonString
jsonString = enovia.doSomething(jsonString)
Set enovia = Nothing
doSomething = jsonString
End Function
虽然这里看起来代码很繁杂,但其实套路很简单:先CreateObject,创建一个COM对象,然后直接把这个对象拿来用就是了。
如果有COM事件,则需要在创建对象的语句后面补一句GetRef:
Set enovia = CreateObject("Custom.Interface.Enovia.Start")
enovia.OnWriteback = GetRef("onWriteback")
这里onWriteback是一个VBS里定义的函数或者过程:
Sub onWriteback(AData)
Dim Answer, AMessage
Set Answer = Decode(AData)
AMessage = Answer.Item("message")
Set Answer = Nothing
End Sub