zoukankan      html  css  js  c++  java
  • c++防止客户端多开巧妙代码

    在读OBS源码时看到一个比较有意思的关于防止用户多开程序的写法,简单有效,记录下

        //make sure only one instance of the application can be open at a time
    #define OBS_WINDOW_CLASS         TEXT("OBSWindowClass")
        HANDLE hOBSMutex = CreateMutex(NULL, TRUE, TEXT("OBSMutex"));
        if(GetLastError() == ERROR_ALREADY_EXISTS)// 如果已有互斥量存在 这里GetLastError则是CreateMutex的Error
        {
            hwndMain = FindWindow(OBS_WINDOW_CLASS, NULL);//获取该窗体句柄
            if(hwndMain)
                SetForegroundWindow(hwndMain);//设置焦点到程序窗口
    
            CloseHandle(hOBSMutex);//互斥量存在释放句柄并复位互斥量
            return 0;
        }

    这里他CreateMutex创建一个互斥体,当第一次执行程序时创建成功,第二次执行程序时则CreateMutex会失败,此时设置程序焦点到已经开启的程序。    end

  • 相关阅读:
    P2009 跑步
    P3916 图的遍历
    P2865 [USACO06NOV]路障Roadblocks
    P2820 局域网
    P2176 [USACO14FEB]路障Roadblock
    讨伐!数论
    网络流入门——EK算法
    最被低估的特质
    我的天哪我有博客了!
    Area POJ
  • 原文地址:https://www.cnblogs.com/duguxue/p/5231371.html
Copyright © 2011-2022 走看看