如何在Windows CE中处理控制台关闭?

时间:2011-12-22 15:52:20

标签: windows winapi visual-c++ windows-ce console-application

我有一个在Window CE 6.0中运行的Win32 C ++控制台应用程序,它包含许多连续运行的线程。偶尔需要停止应用程序,我希望以受控方式发生。执行此操作的一种方法是简单地监视控制台窗口,如果它关闭则停止该过程。不幸的是,SetConsoleCtrlHandler似乎不是Windows CE 6.0的Win32 api的一部分。有谁知道如何检测控制台是否在CE中运行的Win32 C ++程序中关闭?

谢谢,

2 个答案:

答案 0 :(得分:0)

您可以通过DeviceIoControl致电IOCTL_CONSOLE_SETCONTROLCHANDLER来观看Ctrl-C。使用_fileno (stdout)作为hDevice参数。

我认为没有办法获得任何其他“关闭”机制的通知。

答案 1 :(得分:0)

我在Windows Embedded Compact 7上工作了.Ctrl + C和“窗口关闭”事件都被捕获。

  1. 创建Win32事件。
  2. 使用IOCTL_CONSOLE_SETCONTROLCEVENT将该事件传递给DeviceIoControl(),并给出控制台句柄(例如,_fileno(stdout))。当键入Ctrl + C或控制台窗口关闭时,将发出该事件的信号。
  3. 创建一个等待Win32事件发出信号的线程,当它变为信号时,调用你的Ctrl + C处理程序或执行清理,并可能退出程序。
  4. 请注意,IOCTL_CONSOLE_SETCONTROLCHANDLER已被弃用,而且当给出IOCTL代码时,DeviceIoControl()会失败。

相关问题