看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tropical72 (藍影)》之銘言: : 這問題簡單的說:防程式多開。 : ※ 引述《DrStein (啤酒肚)》之銘言: : : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : : windows linux都要 XD 謝 windows 我解決了 提供點快速的作法 假設用MFC (若是用個console程式開個窗口 就是加在main中) 在程式進入點 InitInstance 中 添加下面的代碼: HANDLE hMutex = CreateMutex(NULL, false, WINDOW_NAME); if (GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hMutex); /* focus on the first */ HWND hOldInstance; hOldInstance=::FindWindow(NULL,WINDOW_NAME); if(NULL != hOldInstance) { ShowWindow(hOldInstance,SW_RESTORE|SW_SHOWNORMAL); SetForegroundWindow(hOldInstance); }/*if NULL != hOldInstance*/ return FALSE; }/*if ERROR_ALREADY_EXISTS*/ 然後在窗口實體的OnInitDialog裡 加上 this->SetWindowText(WINDOW_NAME); WINDOW_NAME是個string 當然要定義之: #define WINDOW_NAME TEXT("Some Appication") 這樣程式就不可出多個實例。 當使用者意圖點超過一次時,會自動聚焦於第一個。 linux部份就還在研究。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204