簡體   English   中英

關閉控制台而不退出

[英]Close console without exit

是否可以在不關閉程序的情況下關閉控制台?

例如,打開自定義創建的控制台,或者如果我想打開HWND且不希望控制台在后台運行。

是的,我知道我可以使用WINAPIWinMain但是我希望我的程序也可以在Linux系統上執行(此處不帶HWND )。

C ++不了解控制台。 如果您需要操縱控制台,那么您將需要為正在運行的系統使用API​​。

為此,您可以提供一個公共接口,然后使用預處理器有條件地編譯您需要基於OS符號進行的API調用。

做到這一點的常用方法是使用條件編譯來實現WinMain在Windows中,並main在其他平台上。

一種可能的公式:

#ifdef _WIN32
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPTSTR lpCmdLine, int)
{
    int argc;
    char ** argv;
    std::tie (argc, argv) = parse_command_line_arguments (lpCmdLine);
#else
int main (int argc, char ** argv)
{
#endif

   return 0

}

對於Windows:

我曾經使用ShowWindow (GetConsoleWindow(), SW_HIDE); 在這種情況下,但是,如果您不需要控制台,則不應創建控制台應用程序項目。


對於Linux:

(我不是Linux專家,所以您需要等待其他答案)


對於MAC:

不是MAC開發人員:)


最后,您將需要預處理器為不同的平台編譯不同的代碼。

#ifdef _WIN32
//do what is required for windows
#endif
#ifdef __linux__
//do what is required for linux
#endif
#ifdef __APPLE__
//do what is required for OS x machines
#endif 

沒有跨平台的方法可以做到這一點。 在Linux上,您可以執行以下操作:

int fd = open("/dev/tty", O_RDWR);
ioctl(fd, TIOCNOTTY, NULL);

與終端分離。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM