我需要只在一个实例中运行我的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;
}
如果已初始化相同的程序,如何以编程方式关闭控制台窗口?
答案 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;
}