Как поймать событие закрытия консоли в PowerShell?Как поймать событие закрытия консоли в PowerShell?
Я попытался добавить обработчик управления консоли, и он отлично подходит для CMD, но не в PowerShell, есть ли другой способ в PowerShell?
Пример:
namespace Test_ConCtrl {
class Program {
public enum CtrlTypes : uint { CTRL_C = 0, ... }
public delegate Boolean ConsoleCtrl_Delegate(CtrlTypes CtrlType);
[DllImport("kernel32.dll")]
static extern bool SetConsoleCtrlHandler(
ConsoleCtrl_Delegate HandlerRoutine, bool Add);
public static Boolean My_CtrlHandler(CtrlTypes inConType) {
switch(inConType) { ... }
}
static void Add_Handler() {
ConsoleCtrl_Delegate myHandler = My_CtrlHandler;
SetConsoleCtrlHandler(myHandler, true);
}
...
Это не ясно, если речь идет о «консоли близко» (то есть PowerShell выхода, в пути) или событий Ctrl-C. Для выхода PowerShell см. Мой ответ. –
На самом деле, я хотел закрыть оба выхода PowerShell и Ctrl + C, а Ctrl + C обрабатывается по-другому? (Я запускаю фоновый поток ввода-вывода, и я хотел бы иметь возможность прервать, если пользователь прервет командлет) –