请问怎么知道当前的程序是否已经有一个实例在运行 请问怎么知道当前的程序是否已经有一个实例在运行,通过WinMain的第二个参数可以? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CMutex * hMutex=(CMutex *)CreateMutex(NULL,FALSE,"RunOnlyOneInstance"); if(hMutex == NULL || ERROR_ALREADY_EXISTS == ::GetLastError()) { //已有一个在运行了 exit(0); } WINMAIN的第二个参数早些时候就不能用了,至于为什么,我也不知道,反正没有效果 InitInstance()中加HWND oldHWnd = NULL;EnumWindows(EnumWndProc,(LPARAM)&oldHWnd); //枚举所有运行的窗口if(oldHWnd != NULL){ AfxMessageBox("本程序已经在运行了"); ::ShowWindow(oldHWnd,SW_SHOWNORMAL); //激活找到的前一个程序 ::SetForegroundWindow(oldHWnd); //把它设为前景窗口 return false; //退出本次运行}OnInitDialog()中加SetProp(m_hWnd,g_szPropName,g_hValue);添加EnumWndProc窗口过程函数//添加的标识只运行一次的属性名CString g_szPropName = "Your Prop Name"; //自己定义一个属性名HANDLE g_hValue = (HANDLE)1; //自己定义一个属性值 BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam){ HANDLE h = GetProp(hwnd,g_szPropName); if( h == g_hValue) { *(HWND*)lParam = hwnd; return false; } return true;} 0XC0000005问题 VCW文档的保存过程到底做了什么? VC6.0,如何再一个CPropertySheet中加入既有的CDialog对话框? 菜鸟求救:鼠标位置捕获问题。 如何delete结构体指针? 一个无模式对话框突然无法打开,提示:“试图进行系统不支持的操作” 运行在IE上的java程序和asp程序之间如何传递数据,有具体说明,无论什么语言实现都行,最关键理论要清楚,请大家给个思路 用单文档程序框架生成一个应用程序,当保存一个文档时,如何在程序中得到保存的路径及其文件名?急用,谢谢 没救了么? 请大家给个意见! 小问题,放分,为什么 ; 高分求救!八皇后问题 [在线等待]
if(hMutex == NULL || ERROR_ALREADY_EXISTS == ::GetLastError())
{
//已有一个在运行了
exit(0);
}
HWND oldHWnd = NULL;
EnumWindows(EnumWndProc,(LPARAM)&oldHWnd); //枚举所有运行的窗口
if(oldHWnd != NULL)
{
AfxMessageBox("本程序已经在运行了");
::ShowWindow(oldHWnd,SW_SHOWNORMAL); //激活找到的前一个程序
::SetForegroundWindow(oldHWnd); //把它设为前景窗口
return false; //退出本次运行
}
OnInitDialog()中加
SetProp(m_hWnd,g_szPropName,g_hValue);添加EnumWndProc窗口过程函数
//添加的标识只运行一次的属性名
CString g_szPropName = "Your Prop Name"; //自己定义一个属性名
HANDLE g_hValue = (HANDLE)1; //自己定义一个属性值
BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam)
{
HANDLE h = GetProp(hwnd,g_szPropName);
if( h == g_hValue)
{
*(HWND*)lParam = hwnd;
return false;
}
return true;
}