c++防止客户端多开巧妙代码

本文介绍了一种使用C++防止应用程序被多次打开的方法。通过创建互斥体(mutex),确保同一时间仅有一个实例运行。如果尝试再次启动,将焦点切换到已打开的程序上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++防止客户端多开巧妙代码

2016-03-01 16:01 by 冷水菜, ... 阅读, ... 评论, 收藏, 编辑

在读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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值