當(dāng)前位置:首頁 > IT技術(shù) > Windows編程 > 正文

windows單實例的辦法
2021-08-06 19:18:00

  有的程序需要單實例。

  除了互斥之外,其實還要關(guān)注兩個問題(這個是本文特有的,是實實在在工作中遇到的):

  1. 程序被殺、崩潰之后,再次啟動是否正確。
  2. 多用戶時,是否也是一個實例?如果一個用戶一個實例,那么關(guān)鍵值就要加上用戶名。
#include <windows.h>


int main(int argc, char *argv[])
{
? ? HANDLE hMutex = CreateMutex(NULL, FALSE, "quantum7");
? ? DWORD dwError = GetLastError();
? ? if (ERROR_ALREADY_EXISTS == dwError || ERROR_ACCESS_DENIED == dwError)
? ? {
        // 已經(jīng)有實例了,退出。
? ? ? ? return;
? ? }


    //運行實例,做事。


    //退出時的操作。實際測試中發(fā)現(xiàn),進程殺死,再次啟動是正確的。所以應(yīng)該是進程退出后自動刪除。
? ? CloseHandle(hMutex);

? ? return 0;

}

?

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >