线程互斥问题 我想建立一个程序,如果程序已经运行则再运行时将程序置为当前激活状态,请问大家如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 现成的:http://search.csdn.net/Expert/topic/1060/1060291.xml?temp=.348385 // 创建互斥体对象 HANDLE hMutex=CreateMutex(NULL, FALSE, "PMSVC 2005 0.0.0.1"); // 如果本程序已有实例在运行,则GetLastError()返回ERROR_ALREADY_EXISTS if(GetLastError()==ERROR_ALREADY_EXISTS) { CloseHandle(hMutex); //关闭互斥体对象句柄 //获取桌面窗口的一个子窗口。 HWND hWndPrev=::GetWindow(::GetDesktopWindow(),GW_CHILD); // 枚举当前窗口,查找本程序已运行的实例 while(::IsWindow(hWndPrev)) { //判断窗口是否有预先设置的属性"MutexDlg", //如有,则是要本程序已运行实例的窗口,并将它激活。 if(::GetProp(hWndPrev,PROPNAME)) { //如果主窗口已最小化,则恢复其大小。 if (::IsIconic(hWndPrev)) ::ShowWindow(hWndPrev,SW_RESTORE); //激活应用程序的主窗口 ::SetForegroundWindow(hWndPrev); exit(0);//退出本实例 } //继续寻找下一个窗口。 hWndPrev = ::GetWindow(hWndPrev,GW_HWNDNEXT); } AfxMessageBox(theApp.GetStringFromResourceID(IDS_STRING_ALREADY_EXISTS_ERROR),MB_OK|MB_ICONINFORMATION,NULL); return FALSE; //退出本实例 } VC2010添加控件的问题 一个关于向其它窗口发键盘事件的问题 关于自绘 slider的问题 ComBox和数据绑定的问题 如何让程序在后台运行,并且抓取后台运行的程序的屏幕 怎样在CRichEditCtrl中增加工具条? up就有分 内存泄漏问题? 关于tab键 如何在程序执行过程中在指定位置创建一个新文件夹? 送分 支持MFC的ATL工程做成的com, dll有的时候不能注册是什么原因? 请教一个用IP查MAC的WQL(直接获得MAC的程序代码也可)
HANDLE hMutex=CreateMutex(NULL, FALSE, "PMSVC 2005 0.0.0.1");
// 如果本程序已有实例在运行,则GetLastError()返回ERROR_ALREADY_EXISTS
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex); //关闭互斥体对象句柄
//获取桌面窗口的一个子窗口。
HWND hWndPrev=::GetWindow(::GetDesktopWindow(),GW_CHILD);
// 枚举当前窗口,查找本程序已运行的实例
while(::IsWindow(hWndPrev))
{
//判断窗口是否有预先设置的属性"MutexDlg",
//如有,则是要本程序已运行实例的窗口,并将它激活。
if(::GetProp(hWndPrev,PROPNAME))
{
//如果主窗口已最小化,则恢复其大小。
if (::IsIconic(hWndPrev))
::ShowWindow(hWndPrev,SW_RESTORE); //激活应用程序的主窗口
::SetForegroundWindow(hWndPrev);
exit(0);//退出本实例
}
//继续寻找下一个窗口。
hWndPrev = ::GetWindow(hWndPrev,GW_HWNDNEXT);
}
AfxMessageBox(theApp.GetStringFromResourceID(IDS_STRING_ALREADY_EXISTS_ERROR),MB_OK|MB_ICONINFORMATION,NULL);
return FALSE; //退出本实例
}