工控编程吧
标题:
如何将应用程序已运行的实例调至前台
[打印本页]
作者:
qq263946146
时间:
2019-10-20 14:24
标题:
如何将应用程序已运行的实例调至前台
一般在一个程序只能运行一个实例时全使用到这个功能。
双击运行程序,如果已有一个实例在运行,则将正在运行的程序最前面显示。
首先程序初始代码段添加一代码,
在指定窗口的属性表中增加一个新项
//添加窗口标志
::SetProp(m_hWnd, AfxGetApp()->m_pszExeName, (HANDLE)1);
然后在APP类初始化时进行判断
BOOL CDemoApp::InitInstance()
{
//创建互斥量
m_hMutex = ::CreateMutex(NULL, FALSE, _T("DemoApp"));
//判断互斥量是否存在
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
//获得桌面窗口
CWnd* pDesktopWnd = CWnd::GetDesktopWindow();
//获得第一个子窗口
CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);
while (pWnd != NULL)
{
//获得窗口标志
if (::GetProp(pWnd->m_hWnd, m_pszExeName))
{
//激活窗口
pWnd->SetForegroundWindow();
pWnd->SetDlgItemText(IDC_TEXT, _T("应用程序已经运行。"));
return FALSE;
}
// 继续寻找下一个窗口
pWnd = pWnd->GetWindow(GW_HWNDNEXT);
}
return FALSE;
}
复制代码
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4