我需要在关闭应用程序之前进行一些清理,但是SetConsoleCtrlHandler
似乎不适用于Windows CE控制台应用程序。
在Windows CE 6中是否有处理Ctrl+C
的替代方法?
答案 0 :(得分:5)
根据Microsoft的文档,在Windows CE 3.0及更高版本中,使用DeviceIoControl
控件代码调用的IOCTL_CONSOLE_SETCONTROLCHANDLER
函数将在Windows CE上安装Ctrl + C处理程序。我还没有尝试过,但是这样的“应该”有效:
DWORD ignore;
DeviceIoControl(
_fileno(stdout), // handle to the console
IOCTL_CONSOLE_SETCONTROLCHANDLER, // Tell Win CE to set the console Ctrl+C handler
(LPVOID)consoleHandler, // pointer to the signal handler
sizeof(consoleHandler), // size of the pointer
NULL, // output buffer not needed
0, // zero output buffer size
&ignore, // no data will be put into the output buffer so we don't need its size
NULL); // not an asynchronous operation - don't need to provide async info
其中consoleHandler
当然是你的Ctrl + C处理程序。
文档:
需要标题:
Console.h
winbase.h
(通常包含在windows.h中)。答案 1 :(得分:0)
我在Windows Embedded Compact 7上工作了.Ctrl + C和"窗口关闭"事件都被抓住了。
请注意,IOCTL_CONSOLE_SETCONTROLCHANDLER已被弃用,而且当给出IOCTL代码时,DeviceIoControl()会失败。