我需要在关闭我的应用程序之前进行一些清理,但SetConsoleCtrlHandler
似乎不适用于 Windows CE 控制台应用程序。
Ctrl+C
在 Windows CE 6 中是否有其他处理方法?
我需要在关闭我的应用程序之前进行一些清理,但SetConsoleCtrlHandler
似乎不适用于 Windows CE 控制台应用程序。
Ctrl+C
在 Windows CE 6 中是否有其他处理方法?
根据 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
你的 Ctrl+C 处理程序当然在哪里consoleHandler
。
文件:
需要的标头:
Console.h
winbase.h
(通常包含在 windows.h 中)。我在 Windows Embedded Compact 7 上进行了这项工作。 Ctrl+C 和“窗口关闭”事件都被捕获。
请注意,IOCTL_CONSOLE_SETCONTROLCHANDLER 已被弃用,并且当给出 IOCTL 代码时,DeviceIoControl() 将失败。