首先是方法:
// IsAlreadyRunning - 是否已经运行
BOOL IsAlreadyRunning()
{
BOOL bRet = FALSE;
HANDLE hMutex = ::CreateMutex(NULL, TRUE, _szAppName);
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
bRet = TRUE;
HWND hWnd = FindWindow(_szAppName, _szTitle);
SetForegroundWindow(hWnd);
}
if (hMutex)
{
::ReleaseMutex(hMutex);
}
return bRet;
}
然后在程序开始处调用:
// WinMain - 程序进入点
int CALLBACK WinMain(HINSTANCE hInstance, //应用程序实例句柄
HINSTANCE hPrevInstance, //16位系统中,该值指向当前程序的前一个实例,Win32 系统中,hPrevInstance总是为NULL
LPSTR lpCmdLine, //指向应用程序命令行的字符串的指针,不包括执行文件名
int nCmdShow) //指明窗口如何显示
{
if (IsAlreadyRunning()) return 0;
原文链接: https://www.cnblogs.com/herbertchina/p/5717241.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/237825
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!