程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何讓VC和Delphi程序只運行一個實例(2)

如何讓VC和Delphi程序只運行一個實例(2)

編輯:Delphi

現在我確定思路:首先創建一個互斥對象,如果創建成功(CreateMutex返回值不為NULL)並調用GetLastError函數返回ERROR_ALREADY_EXISTS常數,說明當前進程不是應用程序的第一個實例,結束程序的運行。

我們在VC中以一個沒有窗口,也不用MFC的Win32應用程序作例子。打開VC6,新建一個工程,類型選擇Win32 Application,工程名為:OnlyOne,單擊OK,選擇一個空的工程,完成。為工程添加一個新的C++源代碼文件,命名為:OnlyOne.c,並輸入如下代碼:

#include
int
WINAPI
WinMain(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpCmdLine,
  int nShowCmd
)
{
  char strAppName[] = "OnlyOne";
  HANDLE hMutex = NULL;
  //創建互斥對象
  hMutex = CreateMutex(NULL, FALSE, strAppName);
  if (hMutex != NULL)
  {
   if (GetLastError() == ERROR_ALREADY_EXISTS)
   {
    MessageBox(NULL,TEXT("不是第一次運行這個程序。"),TEXT("OnlyOne"),MB_OK | MB_ICONINFORMATION);
    //關閉互斥對象,退出程序
    CloseHandle(hMutex);
    return (-1);
   } else
   {
    MessageBox(NULL,TEXT("第一次運行這個程序。"),TEXT("OnlyOne"),MB_OK | MB_ICONINFORMATION);
   }
   } else
   {
    MessageBox(NULL,TEXT("創建互斥對象失敗。"),TEXT("OnlyOne"),MB_OK | MB_ICONINFORMATION);
   }
   //關閉互斥對象
   CloseHandle(hMutex);
   return (-1);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved