SetConsoleCtrlHandler
全部标签 我想在Windows上终止python脚本时做一些事情。#coding:utf-8importctypesimportosdefset_exit_handler():defon_exit(event):print'=====exit====='_BOOL=ctypes.c_long_DWORD=ctypes.c_ulong_kernel32=ctypes.windll.kernel32_SIGNAL_HANDLER=ctypes.WINFUNCTYPE(_BOOL,_DWORD)_kernel32.SetConsoleCtrlHandler.argtypes=[_SIGNAL_HAND
我编写了一个在控制台中运行的应用程序,需要在系统关闭或用户注销之前进行快速备份。我的测试应用程序使用信号写入一个文件,并在手动关闭控制台窗口(单击X)时工作。但是当控制台在关机或注销时关闭时它不起作用。根据我在MSDN上阅读的内容,这应该可行。程序是用cygwin64编译的,会不会是这个问题?#include#include#include#includeBOOLWINAPImyHandler(DWORDsignal){switch(signal){caseCTRL_C_EVENT:printf("ctrl-c\n");break;caseCTRL_BREAK_EVENT:printf
我正在为命令行可执行文件编写包装器类。此exe接受来自stdin的输入,直到我在命令提示符shell中点击Ctrl+C,在这种情况下,它会根据输入。我想在C#代码中模拟Ctrl+C按下,将kill命令发送到.NETProcess对象。我试过调用Process.Kill(),但在进程的StandardOutputStreamReader中似乎没有给我任何信息。可能有什么我做的不对吗?这是我尝试使用的代码:ProcessStartInfoinfo=newProcessStartInfo(exe,args);info.RedirectStandardError=true;info.Redir
我正在为命令行可执行文件编写包装器类。此exe接受来自stdin的输入,直到我在命令提示符shell中点击Ctrl+C,在这种情况下,它会根据输入。我想在C#代码中模拟Ctrl+C按下,将kill命令发送到.NETProcess对象。我试过调用Process.Kill(),但在进程的StandardOutputStreamReader中似乎没有给我任何信息。可能有什么我做的不对吗?这是我尝试使用的代码:ProcessStartInfoinfo=newProcessStartInfo(exe,args);info.RedirectStandardError=true;info.Redir
我正在用C++编写一个控制台应用程序。我使用SetConsoleCtrlHandler来捕获关闭和CTRL+C按钮。这允许我的所有线程正确停止和退出。其中一个线程执行了一些需要一些时间才能完成的保存操作,并且我在控制台crtl句柄例程中有一些代码要等待。MSDN指定CTRL_CLOSE_EVENT5秒后应弹出一个框,但我的进程退出了。这对于调试控制台应用程序也很烦人,因为进程在您可以单步执行之前就退出了,我不知道可能是什么问题(我有Windows764位)。另外,奇怪的是,如果我的例程返回TRUE(简单地禁用关闭操作),它仍然会关闭应用程序。该例程确实被调用,因此成功安装了SetCon