2012-10-31 38 views
1

在Visual C++中使用Win32 API時,我想在Windows子系統下創建一個程序,該程序分配一個控制檯,並使用AllocConsole並通過WriteConsole寫入該控制檯。但是,如果用戶關閉了控制檯,該進程應該繼續在後臺運行。就目前而言,我無法做到這一點。當在控制檯標題欄上按下X時,進程退出。讓用戶關閉進程分配的控制檯而不退出進程?

有沒有特別的方法來做到這一點?

在此先感謝!

回答

2

關鍵是要響應用戶試圖關閉控制檯時引發的Console Control Event。然後你可以調用FreeConsole從控制檯分離你的程序,並讓控制檯被銷燬。 保持您的程序運行。

附加信息:

如果在HandlerRoutine退出,那麼我的建議並沒有達到預期效果的過程被終止。如果是這樣的話,那麼你可能有問題。您可以嘗試掛接SC_CLOSE系統消息,並在傳遞消息之前執行FreeConsole。那可能工作,但我不知道如果用戶按下Ctrl + C或Ctrl + Break會做什麼。

問題是控制處理程序退出該過程。可能是HandlerRoutine中的FreeConsole太晚了。

+0

感謝您的支持。我創建了一個處理程序,並且一切順利。只是最後一個問題:我猜我現在必須在HandlerRoutine函數的範圍內執行所有其他操作,因爲當它返回時,進程會自動退出,對吧?至少,這就是我所看到的。 (請參閱http://pastebin.com/LHUa3SFh,生成消息框後進程退出的基本代碼。)再次感謝! – Archimaredes

+0

如果我可以添加到該評論:這可能是沒有必要的,因爲我可以保持HandlerRoutine無限循環,而主代碼不斷... – Archimaredes

+0

@Archimaredes:看到我的額外信息。 –