MFC在程序中判断窗口是否已经运行

MFC在程序中判断本身窗口是否已经运行(也就是说程序是否是运行状态)

给你个函数:
BOOL IsStart(CString strCurProcessName)
{
//得到本进程的ID号
DWORD dCurProcessID = GetCurrentProcessId();

HANDLE hSnapShot = NULL;
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if(hSnapShot == NULL)
{
return FALSE;
}

PROCESSENTRY32 processinfo;
processinfo.dwSize = sizeof(PROCESSENTRY32);

BOOL status = Process32First(hSnapShot,&processinfo);

while(status)
{

if(strcmp(processinfo.szExeFile,strCurProcessName) == 0 /*已经启动了*/ && \
processinfo.th32ProcessID != dCurProcessID /*但不是本进程*/)
{
//说明已经启动了此进程
return TRUE;
}

status = Process32Next(hSnapShot,&processinfo);
}

return FALSE;
}
把程序名作为实参传入,然后用这个函数就可以进行判断了!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-07
主函数HINSTANCE hPrevInstance不为NULL。_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
即hPrevInstance不为NULL

MFC在程序中判断窗口是否已经运行
把程序名作为实参传入,然后用这个函数就可以进行判断了!

MFC在程序中判断窗口是否已经运行
把程序名作为实参传入,然后用这个函数就可以进行判断了!

MFC怎么判断某个程序(如 迅雷)是否正在运行?
简单点可以遍历进程,然后比较进程名,用 Process32First, Process32Next具体可百度搜VC 枚举进程。再简单点可以直接用HWND hWnd = FindWindow(NULL,_T("迅雷7"));函数来判断.如果返回NULL表示未找到。。用FindWindow来判断最好结合 Microsoft Spy++ 来查看窗口具体的信息再来做。。Spy++ 安装Visual St...

mfc 怎么判断窗口是否是关闭的状态,如果是关闭的我要写代码,该怎么判断...
用IsWindow()判断窗口句柄是否有效。http:\/\/msdn.microsoft.com\/en-us\/library\/ms633528(VS.85).aspx 用IsWindowVisible()判断窗口是否可见。http:\/\/msdn.microsoft.com\/en-us\/library\/ms633530(VS.85).aspx 所以这个判断条件可以这么写:if (!IsWindow(hwnd) || !IsWindowVisible(hwnd)) { \/\/...

MFC,怎么判断一个窗体是否存在
::FindWindow(窗口类名, 窗口标题 ), 如果返回的句柄不为NULL, 则表示这个窗口存在

MFC中 如何判断对话框是否存在. 大家帮帮我。
BOOL IsWindow(HWND hWnd \/\/ handle to window );\/\/判断该窗口是否存在 BOOL IsWindowVisible(HWND hWnd \/\/ handle to window );\/\/函数来判断某对话框是显示还是隐藏。

MFC 如何检测进程已启动
你看一下有没有加上下面的函数,::ShowWindow(hWndPrevious, SW_SHOWMAXIMIZED);这个函数就是让界面最大化 还有,你正在运行的程序此时不能有子界面和消息框,就是说你的主界面能操作.但是,即使不能最大化,至少也能弹起来才对。如果还是不行,你把你的InitInstance函数贴出来我看一下。

mfc 判断窗口还原
窗口状态只有正常状态,最小化,最大化。你在程序中判断了不是最小化和最大化就是正常状态。if (IsIconic()){……}\/\/最小化时执行的语句。else if (IsZoomed()){……}\/\/最大化时执行的语句 else {\/\/正常状态执行的语句,这里是调用其父类CDialog的绘图函数OnPaint()CDialog::OnPaint()...

vc如何用mfc判断自己是否活动中,不在活动中马上关闭
响应WM_ACTIVATE消息 void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized){ CFrameWnd::OnActivate(nState, pWndOther, bMinimized);\/\/ TODO: 在此处添加消息处理程序代码 \/\/如果处于非激活状态,则关闭窗口 if(nState==WA_INACTIVE){ DestroyWindow();} } ...

怎样用MFC获得已经打开了的窗口的名字?
CWnd *wnd = GetDesktopWindow()->GetWindow(GW_CHILD);while(wnd!=NULL){ if(wnd->IsWindowVisible()){ wnd->GetWindowText(s);\/\/窗口名 GetClassName(wnd->m_hWnd,buff,1024);\/\/类名 str+=s+" ";} wnd = wnd->GetWindow(GW_HWNDNEXT);} ...

相似回答