//保证程序只有一个实例在运行 BOOL CVideoViewApp::IsExistsInstance() { HANDLE hSem = CreateSemaphore(NULL,1,1,"WJLHANKEXIN"); //创建信标对象 if (hSem) { //如何信标对象存在,则已存在一个实例 if (ERROR_ALREADY_EXISTS == GetLastError()) { CloseHandle(hSem); //关闭信号量句柄 //获取桌面上的窗口 HWND hWndPrev=::GetWindow(::GetDesktopWindow(),GW_CHILD); //是存在的窗口 while (::IsWindow(hWndPrev)) { //判断窗口是否有我们设置的标记 if (::GetProp(hWndPrev,"WJLHANKEXIN")) { //判断是否是最小化 if (::IsIconic(hWndPrev)) { //显示 ::ShowWindow(hWndPrev,SW_RESTORE); } //激活到前台 ::SetForegroundWindow(hWndPrev); return FALSE; //退出新的实例 } hWndPrev = ::GetWindow(hWndPrev,GW_HWNDNEXT); } AfxMessageBox("实例在运行,但找不到窗口"); return FALSE; } } else { CloseHandle(hSem); hSem = NULL; AfxMessageBox("创建信标对象失败,退出程序"); return FALSE; } //实例不存在 return TRUE; }
【上篇】ARC专题:编写兼容ARC(自动引用计数) 和 non-ARC(非自动引用计数)的通用代码
【下篇】解决方法:访问接口 “SQLNCLI10″ 的架构行集 “DBSCHEMA_TABLES_INFO”。该访问接口支持该接口
【下篇】解决方法:访问接口 “SQLNCLI10″ 的架构行集 “DBSCHEMA_TABLES_INFO”。该访问接口支持该接口