給你個sample(放在::InitInstance()中):
   ::CreateMutex(NULL,FALSE,"Global\\Chief");
if(::GetLastError()==ERROR_ALREADY_EXISTS)
         {
                  MessageBox("程序第二次運行,退出!");
return FALSE;
          }

解决方案 »

  1.   

    BOOL CxxApp::InitInstance()
    {
    CreateMutex(NULL,TRUE,AfxGetAppName());
    if(GetLastError()==ERROR_ALREADY_EXISTS)
    {
    AfxMessageBox("程序已经运行"); //或不写
    return FALSE;
    }

    ....//原来的代码
    }
    //我回答过两次了...
      

  2.   

    参考:MSDN -> 
     Knowledge Base -> 
      Visual C++ -> 
       HOWTO: Limit 32-bit Applications to One Instance Using C++
       ID: Q243953 
      

  3.   

     还可以在注册表里加一个键, 运行的时候先判断是不是TRUE不是就可以运行,并把他设为TRUE,退出时候设为FALSE
      

  4.   

    InitInstance()中:
          ::CreateMutex(NULL,FALSE,"AFX_XXX_XXXX_XXXXX");
    //其中AFX_XXX_XXXX_XXXXX是.H文件中建立的唯一编码;这种方法最保险!
        if(::GetLastError()==ERROR_ALREADY_EXISTS)
            {
            MessageBox("你想找死呀!");
            return FALSE;
              }
      

  5.   

    InitInstance()中:
          CreateMutex(NULL,FALSE,"AFX_XXX_XXXX_XXXXX");
    //其中AFX_XXX_XXXX_XXXXX是.H文件中建立的唯一编码;这种方法最保险!
        if (GetLastError()==ERROR_ALREADY_EXISTS)
            {
            MessageBox("你想找死呀!");
            return FALSE;
              }
      

  6.   

    建议你阅读《WINDOWS核心编程>>一书,里面有详细的解释,参看内核对象一节。
      

  7.   

    InitInstance()中:
          
    SetRegistryKey(_T("我的应用名"));
    HANDLE  hMutex;
    hMutex=CreateMutex(NULL,FALSE,"我的应用名");
    if(hMutex==NULL||ERROR_ALREADY_EXISTS==::GetLastError())

    return FALSE; 
      

  8.   

    <WINDOWS核心编程>
    可以用FindWindow来查找某一特定的窗口类或能唯一标识该应用的窗口标题,若FindWindow返回是NULL,她就是现在唯一的