人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

VC++中完成程序互斥運行

VC++中完成程序互斥運行

更新時間:2022-08-17 文章作者:未知 信息來源:網絡 閱讀次數:

在軟件的開發過程中,有時需要控制一些程序不能同時運行,也就是多個程序間互斥運行(還包括禁止同一程序運行多個實例)。針對這一問題,我們在Visual C++ 6.0中利用內存映射文件實現了多個程序間的互斥運行。 
  在講述具體的編程方法之前,讓我們先來看看和內存映射文件操作有關的幾個重要的函數: 
  1)CreateFileMapping函數為指定的文件創建一個文件映射對象,該函數的原型如下: 
  HANDLE CreateFileMapping( 
   HANDLE hFile, // 用于映射的文件句柄 
   LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // 內存映射文件的安全描述符 
   DWORD flProtect, // 文件的保護方式 
   DWORD dwMaximumSizeHigh, 
  // 文件映射對象的最大長度的高32位 
   DWORD dwMaximumSizeLow, 
  // 最大長度的低32位 
   LPCTSTR lpName       
  // 指定這個內存映射文件的名字 
  ); 
  2)MapViewOfFile函數將文件的視圖映射到一個進程的地址空間上,返回LPVOID類型的內存指針,通過它,就可以直接訪問文件視圖中的信息: 
  LPVOID MapViewOfFile( 
   HANDLE hFileMappingObjct,     
    // 映射文件對象句柄 
   DWORD dwDesiredAccess, // 訪問模式 
   DWORD dwFileOffsetHigh,       
  // 文件偏移地址的高32位 
   DWORD dwFileOffsetLow,       
  // 文件偏移地址的低32位 
   DWORD dwNumberOfBytesToMap   
  // 映射視圖的大小 
  ); 
  在Visual C++ 6.0中我們用默認方式生成基于對話框的應用程序,在程序的初始化階段,在CwinApp派生類的InitInstance函數的開始處,添加以下代碼: 
  { HANDLE hMap=CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, 
PAGE—READWRITE, 0, 128, ″MutexRunning″); 
  if(hMap==NULL) // 如果創建失敗 
{ AfxMessageBox(″創建用于互斥運行的內存映射文件對象失敗!″, 
MB—OK|MB—ICONSTOP); 
return FALSE; } 
else if(GetLastError()==ERROR—ALREADY—EXISTS) 
{ LPVOID lpMem=MapViewOfFile(hMap, FILE_MAP—WRITE, 0,0,0); 
CString str=(char)lpMem; 
UnmapViewOfFile(lpMem); 
CloseHandle(hMap); 
AfxMessageBox(str, MB—OK|MB—ICONSTOP); 
return FALSE; } 
else 
{ LPVOID lpMem=MapViewOfFile(hMap, FILE—MAP—WRITE, 0,0,0); 
strcpy((char)lpMem, ″xxx程序正在運行!″); 
UnmapViewOfFile(lpMem); 


AfxEnableControlContainer(); 
  ...... 
  //這里可以在InitInstance函數最后returnFALSE之前調用 
   CloseHandle(hMap); 
  //關閉內存映射文件對象句柄 
return FALSE; 
  } 
  以上的程序在Visual C++ 6.0中已調試通過。 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 紫阳县| 舟曲县| 扬中市| 泗洪县| 安顺市| 许昌市| 紫金县| 蓝田县| 弥渡县| 盐亭县| 龙山县| 密山市| 原平市| 嘉黎县| 镇康县| 漳平市| 新乐市| 淮滨县| 普陀区| 连州市| 长春市| 桂阳县| 岐山县| 固安县| 樟树市| 临颍县| 虞城县| 安溪县| 苍梧县| 玛沁县| 运城市| 上杭县| 冀州市| 泽库县| 米林县| 珲春市| 大石桥市| 宜章县| 衡阳县| 邹平县| 宜丰县|