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

时间:2015-06-15 15:23:11

标签: c++ windows mutex handle

我需要只在一个实例中运行我的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;
}

如果已初始化相同的程序,如何以编程方式关闭控制台窗口?

2 个答案:

答案 0 :(得分:2)

你可以通过

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

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

答案 1 :(得分:1)

_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;
}