【发布时间】:2019-03-02 09:43:14
【问题描述】:
很久以前,我创建了一个 COM 类,它可以做一些事情并提供回调注册:
HRESULT RegisterCallback([in] IUnknown* callbackFunction);
callbackFunction 的类型可以是 IDispatch 或 ICallbackHandler
interface IActionCallbackHandler : IUnknown {
[id(1)] HRESULT ActionCallback(IActionCallbackData* data);
};
IDispatch 用于注册 VBScript 子程序作为回调方法例如:
Sub ProgressCallback (data)
WScript.Echo data.Message
End sub
Set myObj= CreateObject("MyClass.MyClass")
myObj.RegisterCallback GetRef("ProgressCallback")
myObj.DoSomeActions //this method will call ProgressCallback()
然而,工程师们试图摆脱 VBScript 并用 powershell 代替一切。除了回调,一切都在 powershell 中工作。所以没有任何进展,他们也无法记录任何内容。
如何在 powershell 中实现这个回调?以与 VBScript 中相同的方式引用 powershell 函数将是完美的。这样,他们仍然可以使用他们的日志记录对象等。
【问题讨论】:
标签: c++ powershell callback com