Обработка события COM в PowerShell - PullRequest
0 голосов
/ 23 января 2019

Я управляю приложением через его COM-сервер из PowerShell. Это довольно просто:

# 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?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Является ли OnFinished свойством приложения или объекта измерения? Если это так, и он возвращает значение при запросе, вы можете использовать цикл while для ожидания того, чтобы возвращаемое значение было конкретным значением, например, если это свойство возвращает «Completed» после завершения процесса:

while($measure.OnFinished -ne 'Completed')
{
    Sleep 5
}

Трудно быть более конкретным с моим ответом, так как я не знаком с вашим COM-объектом:)

0 голосов
/ 23 января 2019

Если первичная сборка взаимодействия (PIA) предоставляется разработчиком для COM-объекта, который вы используете, вы можете легко зарегистрировать обработчики событий, используя его.

Например, обратитесь к этому описанию.
Регистрация и отслеживание событий API автоматизации Communicator 2007

Как и вышеупомянутые компоненты и Office, PIA предоставляется для многих продуктов Microsoft.
Офисные первичные сборки взаимодействия

Если PIA отсутствует, вы можете запросить его у разработчика или создать его самостоятельно.
Способ сделать это объяснен на этой странице.
Как: создать основные сборки взаимодействия с помощью Tlbimp.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...