您的位置:首页 > 其它

只能运行程序的一个实例

2006-03-26 23:32 323 查看
 四、 只能运行程序的一个实例

当程序已经运行时,如果再次运行,则激活前一个实例。
实现原理:

1. 只运行一个实例
#define UNIQE_NAME "{1AB792D6-EEF2-4528-9A84-91356811E7A4}"

BOOL CRaclientApp::InitInstance()函数中加入
m_hOneInstance = ::CreateMutex( NULL,FALSE,UNIQE_NAME);
if ( GetLastError() == ERROR_ALREADY_EXISTS )//如果存在前一个
{
//发送消息,激活实例
DWORD dwRecipients = BSM_APPLICATIONS;
::BroadcastSystemMessage( BSF_NOHANG,&dwRecipients,
ID_RA_MSG, // registered window message
0,0 ); // user defined parameters
return FALSE;
}

还要在CRaclientApp::ExitInstance()中
CloseHandle(m_hOneInstance);

2、激活前一个实例
#define ra_MSG "{D48CA923-4925-41cb-8F56-ABAAAFCEF787}"
const UINT ID_RA_MSG =::RegisterWindowMessage(ra_MSG);//注册消息

然后再CmainFrame中添加相应的消息处理函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  parameters null user