昨天晚上我看了一个程序,发现了一段代码,以前总是在想如何让你一个正在运行的程序,当再继续运行这个程序的时候会提示程序已经运行,看了以后发现原来在vc中实现好简单啊,简短的几行代码就可以使整个程序互斥。
我在vc下分别建了一个docment和dialog的程序,在建立完后找到APP的类在类中定义一个handle,然后就创建一个互斥进程。下面我就具体的使用代码来说明如何实现这个效果。
首先建立一个docment工程,然后在document的app类中定义一个protect的变量HANDLE m_hMutex。然后找到app类中的那个instance的初始化函数,在初始化函数里添加如下的代码,我这里实现的效果是当运行一个程序后又运行一个程序就会弹出警告的messagebox,使用如下的代码:
m_hMutex = CreateMutex(NULL, FALSE, _T("SCU_Mutex"));
if (m_hMutex && GetLastError() == ERROR_ALREADY_EXISTS)
{
CString strText;
strText.LoadString(IDS_STRING_ALREADY_EXISTS);
MessageBox(NULL, strText, NULL, MB_OKCANCEL);
return FALSE;
}
其中要在资源里定义一个string字符串 IDS_STRING_ALREADY_EXISTS “程序已经运行”