一、检查程序只有一个运行实例
通过创建CreateMutex
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
cout << "In this process!\n" << endl;
// 创建互斥锁
HANDLE hMutex = CreateMutex(NULL, TRUE, L"XONE");
// 表示程序已经存在
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
if (hMutex) CloseHandle(hMutex); // 释放资源
MessageBox(NULL, L"XONE is already runing!", L"", 0);
return -1;
}
getchar();
return 0;
}
二、自动隐藏控制台
1、预处理指令
#pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup")
在程序的前面添加这条预处理指定,就不会显示控制台。
2、WinMain:Win32程序
int XMain()
{
MessageBox(NULL, L"In this process!", L"", 0);
cout << "In this process!\n" << endl;
getchar();
return 0;
}
int main()
{
return XMain();
}
int WINAPI WinMain(HINSTANCE h, HINSTANCE p, LPSTR cmd, int s)
{
return XMain();
}
采用自定义一个新的XMain函数,并且生命两个main类,一个是控制台的main函数,一个是Win32的WinMain函数
通过两个不同的main函数来调用公用的XMain函数,实现了在Win32程序中隐藏控制台,在控制台程序中显示控制台。