3
如何在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退出請參閱我的答案。 – 2014-10-07 11:08:38
其實,我想覆蓋PowerShell的退出和Ctrl + C,Ctrl + C的處理方式是不一樣的嗎? (我正在啓動一個後臺IO線程,如果用戶中止該cmdlet,我希望能夠中止) – 2014-10-07 23:37:10