MFC 互斥对象and FindWindow,程序只能运行一个实例

 

 

    ////在弹出对话框之前创建互斥体
    //HANDLE h = ::CreateMutex(NULL,NULL,"dfgewfjoiwejfiowjkop34jkeopkf0239r");//第三个参数为创建的唯一字符的互斥体,不可能重复的
    //if(GetLastError() == ERROR_ALREADY_EXISTS){//如果互斥体已经存在,则返回
    //    CloseHandle(h);//因为他是内核对象句柄,所以得关闭,在哪里使用内存就在哪里关闭
    //    AfxMessageBox("已经运行了一个");
    //     h=NULL;//把指针指向NULL
    //    return false;
    //}



    HWND  h = ::FindWindow("#32770","枚举窗口");//#32770的类名就是对话框,后面为窗口的标题
    if(h){
        AfxMessageBox("已经存在一个程序在运行");
        ::ShowWindow(h,SW_NORMAL);//显示窗口
        ::SetForegroundWindow(h);//设置当前焦点窗口
        CloseHandle(h);
        return false;//必须得返回false
    }

 

posted @ 2013-08-03 01:17  宝贝,我永远都在  阅读(336)  评论(0)    收藏  举报