Catch Windows terminal closing on running process

前端 未结 3 1335
旧巷少年郎
旧巷少年郎 2020-12-20 03:26

In a command prompt window, I have a running process. While the process is still executing, I click the (red) \'X\' in the corner of the command prompt window. The command p

相关标签:
3条回答
  • 2020-12-20 03:57

    This cannot be done directly from command prompt. You would need a secondary anything (vbs, powershell or custom MyApp.exe) to catch cmd.exe when it is closed and react accordingly.

    For instance, a VBS WMI monitor.

    strComputer = "."
    Set objSWbemServices = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!" & "\\" & strComputer & "\root\cimv2")
    Set objEventSource = objSWbemServices.ExecNotificationQuery( "SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'cmd.exe'")
    Set objEventObject = objEventSource.NextEvent()
    Wscript.Echo "CMD.exe closed"
    
    0 讨论(0)
  • 2020-12-20 04:02

    The equivalent of SIGHUP is provided through the callback you register with SetConsoleCtrlHandler. Your callback function will be called on an arbitrary threadpool thread with dwCtrlType = CTRL_CLOSE_EVENT. You've got 5 seconds to clean-up, you cannot cancel the close.

    Sample code is available in this MSDN article

    0 讨论(0)
  • 2020-12-20 04:03

    "SIGHUP"... tested on Windows 8.1 pro + Node.js 0.10.24 works fine..

    process.on('SIGHUP', function(){
        //Your code goes here.
    });
    
    0 讨论(0)
提交回复
热议问题