以编程方式关闭 Windows 控制台应用程序 c++

Programmatically close Windows console application c++

我需要我的 windows 控制台应用程序仅在一个实例中为 运行(即一次只能有一个应用程序实例为 运行)。 这是我拥有的:

int _tmain(int argc, _TCHAR* argv[])
{
    PCTSTR Name = TEXT("AnyName");
    HANDLE h = CreateMutex(NULL, FALSE, Name);

    if (GetLastError() == ERROR_ALREADY_EXISTS)
    {
        _tprintf_s(TEXT("This application is already opened."));
        CloseHandle(h);
        // Close the console somehow
        return 0;
    }
    else _tprintf_s(TEXT("The application has been opened the first time."));

    _gettchar();
    return 0;
}

如果同一程序已经初始化,我如何以编程方式关闭控制台window?

你可以通过

隐藏它
ShowWindow(GetConsoleWindow(), SW_HIDE);

虽然我真的认为你应该退出程序而不是关闭控制台。

_gettchar() 用于阻止控制台关闭,因此只有在您想要保持控制台打开时才允许它,这意味着如果您希望它关闭,它将:

int _tmain(int argc, _TCHAR* argv[])
{
    PCTSTR Name = TEXT("AnyName");
    HANDLE h = CreateMutex(NULL, FALSE, Name);

    if (GetLastError() == ERROR_ALREADY_EXISTS)
    {
        _tprintf_s(TEXT("This application is already opened."));
        CloseHandle(h);
        return 0;
    }
    else
    {
         _tprintf_s(TEXT("The application has been opened the first time."));
         _gettchar();
    }
    return 0;
}