只运行1个实例判断,任务管理器没有,程序却提示存在???
我用信号量和窗口增加标记拌饭 来判断是否 已经运行了1个实例,
bool CTest1::IfProgramExited()
{
HANDLE hSem = CreateSemaphore(NULL, 1, 1,"ProgramA");
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hSem);
HWND hWndPrevious = ::GetWindow(::GetDesktopWindow(),
GW_CHILD);
while (::IsWindow(hWndPrevious))
{
if (::GetProp(hWndPrevious, “test"))
{
if (::IsIconic(hWndPrevious))
::ShowWindow(hWndPrevious,
SW_RESTORE);
::SetForegroundWindow(hWndPrevious);
::SetForegroundWindow(
::GetLastActivePopup(hWndPrevious));
return TRUE;
}
// 继续寻找下一个窗口
hWndPrevious = ::GetWindow(hWndPrevious,
GW_HWNDNEXT);
}
if (::IsIconic(hWndPrevious))
:ShowWindow(hWndPrevious, SW_RESTORE);
// 将主窗激活
::SetForegroundWindow(hWndPrevious);
// 将主窗的对话框激活
::SetForegroundWindow(
::GetLastActivePopup(hWndPrevious));
return true;
}
return false;
}
CTestApp::InitInstance()
{
//设置标记
SetProp(m_pMainWnd->GetSafeHwnd(),"test","");
}
//去掉标记
CMainFrame::OnDestroy()
{
RemoveProp(m_hWnd,"test");
}
但是有的时候 程序退出后,在任务管理器中,以及各没有了test.exe进程,但是用上述函数判断的时候,却还提示
“程序已经存在”,请问是什么原因???? 谢谢
...全文
相关推荐
命令提示符(cmd)打开任务管理器
用户命令提示符(cmd)打开任务管理器查看进程方法.doc
防止C#应用程序被任务管理器结束
网上的方法几乎99%的都无法使用,亲测win7——32,64有效,画面不闪,无论是结束进程还是结束进程树都无法关闭,可编译AnyCpu,具体用法参考代码。三行代码解决你的需求。
运行任务管理器的多个实例
一个简单的应用程序,允许用户运行多个任务管理器实例。
java判断任务管理器进程
写的一段代码,通过java操作任务管理器,判断任务管理器里面进程存在的状态(是否存在某个进程),我这个例子里面是判断是否存在HandInput这个进程
VB在任务管理器清除自身的存在
内容索引:VB源码,系统相关,任务管理器 VB在任务管理器清除自身的存在,没什么好说的,好像自己关闭自己一样,有兴趣的看一看。


