我正在通过PowerShell的COM服务器控制应用程序。这很简单:
# Start the application via COM
$app = New-Object -ComObject CoolApp.Application
# Start a data measurement in the application
$measurement = $app.Measurement
$measurement.Start()
现在最困难的部分是:Measurement对象具有一个名为“ OnFinished”的事件,该事件在完成数据测量时被调用。我希望我的Powershell脚本等待此事件的发生。
如何订阅这样的COM事件PowerShell?
答案 0 :(得分:0)
如果开发人员向您使用的COM对象提供了主互操作程序集(PIA),则可以使用它轻松注册事件处理程序。
例如,请参阅此描述。
Registering and Catching Communicator 2007 Automation API Events
与上述组件和Office一样,Microsoft的许多产品都提供了PIA。
Office primary interop assemblies
如果没有PIA,则可以向开发者提出要求,也可以自己创建。
本页说明了制作方法。
How to: Generate Primary Interop Assemblies Using Tlbimp.exe
答案 1 :(得分:0)
OnFinished是应用程序或度量对象的属性吗?如果是这样,并且在查询时返回一个值,则可以使用while循环来等待该返回值成为特定值,例如如果该过程完成后该属性返回“已完成”:
while($measure.OnFinished -ne 'Completed')
{
Sleep 5
}
由于我对您的COM对象不熟悉,因此很难更具体地回答我:)