一、檢查程序只有一個運行實例
通過創建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程序中隱藏控制檯,在控制檯程序中顯示控制檯。