只运行一个应用程序的实例

#define	APP_ID		"C4A75624-61A8-4D2D-9112-E410742857E8" // GUID

void CTestDlg::OnlyRunOneInstance()
{
	BOOL bInstanceExist=false;

	HWND hWnd = ::GetWindow(::GetForegroundWindow(), GW_HWNDFIRST);
	for (; hWnd; hWnd = ::GetWindow(hWnd, GW_HWNDNEXT))
	{
		if ((HANDLE)::GetProp(hWnd, APP_ID)  == (HANDLE)1)
		{
			if (::IsIconic(hWnd))
			{
				::ShowWindow(hWnd, SW_RESTORE); //还原最小化的窗口
			}
			::SetForegroundWindow(hWnd); //激活窗口
			bInstanceExist=true; //赋值0是为了防止ExitInstance中将找到的ATOM量删除
			break;
		}
	}
	if(bInstanceExist)
	{
		exit(0);
	}
	else
	{
		// 给添加一个具有唯一性的属性值
		::SetProp(this->m_hWnd, APP_ID, (HANDLE)1);
	}
}


然后在初始化对话框中调用函数OnlyRunOneInstance()即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值