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

windows單實(shí)例的辦法
2021-08-06 19:18:00

  有的程序需要單實(shí)例。

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

  1. 程序被殺、崩潰之后,再次啟動(dòng)是否正確。
  2. 多用戶(hù)時(shí),是否也是一個(gè)實(shí)例?如果一個(gè)用戶(hù)一個(gè)實(shí)例,那么關(guān)鍵值就要加上用戶(hù)名。
#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)有實(shí)例了,退出。
? ? ? ? return;
? ? }


    //運(yùn)行實(shí)例,做事。


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

? ? return 0;

}

?

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

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