windows程序单实例

来源:互联网 发布:政务数据服务网 编辑:程序博客网 时间:2024/05/21 11:07
    // pszUniqueName需要以Global\\开头,且需保证事件名在整个计算机上唯一,可以使用GUID    //    BOOL CheckSingleInstance(LPCTSTR pszUniqueName) {        HANDLE hMutex = CreateEvent(NULL, TRUE, FALSE, pszUniqueName);        DWORD dwLstErr = GetLastError();        BOOL bOneInstanceCheck = TRUE;        if(hMutex) {            if(dwLstErr == ERROR_ALREADY_EXISTS) {                CloseHandle(hMutex);                bOneInstanceCheck = FALSE;            }        }        else {            // 注:这一步不能遗漏,否则,不同session(会话)中仍然能存在多个实例。            if(dwLstErr == ERROR_ACCESS_DENIED)                bOneInstanceCheck = FALSE;        }        return bOneInstanceCheck;    }
int main() {    if(CheckSingleInstance(TEXT("Global\\9E27A5A3F6924FFFAE834E230CB27575") == FALSE) {        printf("已经有一个实例在运行了\n");        return 1;    }    return 0;}
原创粉丝点击