您的位置:首页 > 其它

让程序只有一个应用程序实例在运行

2011-05-28 21:54 393 查看
当一个应用程序正在运行的时候我们不希望双击这个应用程序的时候又开启一个新的运行实例, 而仅仅只需要激活先前的实例即可。下面介绍三种简单的方法, 都是在程序开始的时候加入代码:

第一种方法:

HWND hOldWnd = NULL;
/// define OLD_WND_NAME "先前窗口实例的名字"
hOldWnd = ::FindWindowEx(NULL, NULL, NULL, OLD_WND_NAME);
if (hOldWnd)
{
::ShowWindow(hOldWnd, SW_RESTORE);
::SetForegroundWindow(hOldWnd);
return 0;
}


第二种方法(互斥对象):

HANDLE hMutex;
hMutex = CreateMutex(NULL, TRUE, L"any name");
if (hMutex)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
// 直接返回
return 0;
}
}


第三种方法(事件对象):

HANDLE hEvent;
hEvent= CreateEvent(NULL, FALSE, FALSE, L"any name");
if (hEvent)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
// 直接返回
return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: