如何快速退出SW

时间:2009-02-13 06:02:34

标签: winapi

我有一个驻留在外置硬盘中的软件,它会在用户插入外置硬盘时自动运行,当然,当用户拔掉外接硬盘时,软件必须自动关闭。我可以收到设备丢失的消息,但是我的SW不会响应发布所有对象,如果我直接调用exit(0),SW将显示崩溃消息。有没有办法快速退出SW?

4 个答案:

答案 0 :(得分:1)

退出Windows应用程序的简洁方法是

PostQuitMessage(0);

这会将WM_QUIT发送到应用程序,导致消息循环终止。

答案 1 :(得分:0)

终止流程的最快方法是致电TerminateProcess()。这简单地阻止进程接收任何进一步的时间片并释放由Windows分配给它的所有资源。

虽然出于各种原因,但不推荐这种结束流程的方法。例如,如果你有一个使用标准库写入的打开文件,一些数据可能仍然被缓冲而不能完全写入文件。

答案 2 :(得分:0)

我假设你想要干净利落地退出。如果您不需要干净地退出,请使用PostQuitMessage。如果您这样做,并且它是一个UI应用程序,请将WM_CLOSE发送到您的主窗口。

你应该澄清你的软件在你退出时“不会回应”的对象,以及为什么它不再响应

答案 3 :(得分:0)

我认为您正在寻找一种方法来防止您的应用在用户拔出外部设备时崩溃。您可以强制操作系统将可执行文件从可移动媒体复制到交换文件并从那里执行。相应的链接器开关(对于MSVC ++)是 / SWAPRUN:{NET | CD}
将其设置为CD,操作系统将从外部驱动器执行时将可执行文件复制到交换。