как перехватить WM_QUIT в powershell? - PullRequest
0 голосов
/ 01 марта 2020

Я должен поддерживать систему, состоящую из главного приложения (панели управления), которая запускает / останавливает вспомогательные приложения по требованию. Вспомогательные приложения запускаются как отдельные процессы, и, согласно документации, когда мастер хочет, чтобы они остановились, он посылает им сигнал WM_QUIT, а если приложение не останавливается, он убивает процесс.

Один из вспомогательное приложение представляет собой скрипт powershell, который выполняется без окон. Есть ли способ перехватить WM_QUIT в powershell? Я гуглил событие для регистрации на Register-ObjectEvent, но ничего не нашел.

на данный момент, система работает на windows 2008-R2 + Powershell v2, но при необходимости я могу перейти на Windows 2012-R2 + Powershell v5.

1 Ответ

0 голосов
/ 02 марта 2020

Это создаст скрытую форму. Он будет прослушивать, если ему отправлено WM_quit.

Add-Type -AssemblyName System.Windows.Forms

$Form                            = New-Object system.Windows.Forms.Form
$Form.ClientSize                 = '400,400'
$Form.text                       = "Form"
$Form.TopMost                    = $false
$Form.Visible                    = $false

$Form.Add_Load({ test })

Function test () {
# Start Writing your code here
# This hidden Window will receive your WM_Quit
# Since your code is part of the form it will stop when WM_Quit is sent.
}
...