| ²é¿´: 155 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
zsgllyľ³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
ʵÏÖ³ÌÐò»¥³âÔËÐеļ¸ÖÖ·½·¨
|
||
|
ÔÚWIN32Ï£¬ÊµÏÖ³ÌÐò»¥³âÔËÐеķ½·¨ÓкܶàÖÖ£¬ÎÒ¼òµ¥·ÖÎöÒÔϼ¸ÖÖ²»Í¬µÄʵÏÖ£º Ò»¡¢ÔÚVCϵÄʵÏÖ Visual C++ ÊÇWIN32±à³Ì×îÖ÷ÒªÒ²ÊÇ×îÇ¿´óµÄ±à³Ì¹¤¾ßÕâÒ»£¬ÒýÓÃÒ»Ãû»°À´ËµVC¾ÍÊÇ¡°Ö»ÓÐÄãÏë²»µ½µÄ£¬Ã»ÓÐVC×ö²»µ½µÄ¡±¡£·Ï»°ÉÙ˵£¬ÏÂÃæ¿´¿´ÓÃVCÊÇÈçºÎÕâ¸ö¹¦ÄÜ¡£ A£® ʹÓñàÒëÆ÷À´ÊµÏÖ£¨Ê¹ÓÃMFC¿ò¼Ü£©£º ÔÚ.cppÎļþ¿ªÍ·¼ÓÉÏÒÔϼ¸ÐУº #pragma data_seg("Shared" int volatile g_lAppInstance =0; #pragma data_seg() ÎÒÃÇÀ´¿´Ò»ÏÂÉÏÃæµÄÄÚÈÝ£º µÚÒ»¾ä #pragma data_seg("Shared" ´´½¨Ò»¸ö³ÆÎªShared µÄнڡ£ µÚ¶þ¾ä int volatile g_lAppInstance =0 ½« g_lAppInstance ·ÅÈëShared½ÚÖС£×¢Òâ´ËʱֻÓн«g_lAppInstance³õʼ»¯£¬±àÒëÆ÷²Å»á½«Æä·ÅÈëShared½ÚÖУ¬·ñÔò£¬½«·ÅÈëSharedÒÔÍâµÄ½Ú¡££¨Êµ¼ÊÉÏVisual C++ ±àÒëÆ÷ÌṩÁËÒ»¸öallocate ˵Ã÷·û£¬Ê¹ÎÒÃÇ¿ÉÒÔ½«Êý¾Ý·Åµ½ÈκνÚÖС££© µÚÈý¾äָʾ±àÒëÆ÷Shared ½Ú½áÊø¡£ #pragma comment(linker,"/section:Shared,RWS" ÕâÒ»¾ä£¬ÎÒÃÇʹ±àÒëÁ´½ÓÆ÷ÖªµÀÎÒÃǵÄShared½Ú¾ßÓжÁ£¬Ð´£¬¹²ÏíµÄÊôÐÔ¡£ÕâÊÇÎÒÃÇʵÏÖ»¥³âÔËÐеĹؼü¡£ÕâÑùÎÒÃǾͿÉÒÔÔÚÓ¦ÓóÌÐòÖ®¼äµÄ¶à¸öʵÀýÖ®¼ä¹²Ïíg_lAppInstance ±äÁ¿¡£ ÔÚInitInstance() º¯ÊýÖмÓÈ룺 if(++g_lAppInstance>1) { AfxMessageBox("³ÌÐòÒѾÔËÐÐ!" ; return FALSE; } ÒÔÉÏ´úÂëµÄ×÷ÓÃÊÇÔÚ³ÌÐòÊÇ¿ªÊ¼¶Ôg_lAppInstancd ¼Ó1 £¬Èç¹û·¢ÏÖÆäÖµ´óÓÚ1£¬ÄÇôÏÔʾMessage Box ,²¢·µ»ØFALSE¡££¨×¢Ò⣺ÔÚMFCÖÐÈç¹ûInitInstance·µ»ØFALSE£¬³ÌÐò½«²»»á±»ÔËÐУ¡£© B.ʹÓÃÃüÃû»¥³â¶ÔÏó£º Ê¹ÓÃAPIº¯ÊýCreateMutexÀ´´´½¨ÃüÃû»¥³â¶ÔÏóÀ´ÊµÏÖ³ÌÐò»¥³âÊÇÒ»¸ö±È½ÏͨÓõķ½·¨£¬ÎÒÃÇ¿ÉÒÔÔÚIninInstance()º¯Êý¼ÓÈëÈçÏ´úÂë: HANDLE hObject = CreateMutex(NULL,FALSE,"LJPXYXC" ; if(GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hObject); AfxMessageBox("³ÌÐòÒѾÔËÐÐ!" ; return FALSE; } ÒÔÉϵÄCreateMutextº¯Êý´´½¨Ò»¸ö³ÆÎª¡°LJPXYXC¡±µÄÃüÃûµÄ»¥³â¶ÔÏ󣬵±³ÌÐòµÄµÚ¶þ¸öʵÀýÔËÀýʱ£¬µ÷ÓÃCreateMutex ·µ»ØERROR_ALREADY_EXISTS¡£ÎÒÃǸù¾ÝÕâ¸öÖµÀ´ÊµÏÖ³ÌÐòµÄ»¥³âÔËÐС£ ¶þ¡¢VBµÄʵÏÖ ÔÚVBʵÏֵijÌÐòÖУ¬È«¾Ö¶ÔÏóApp.PreInstance¿ÉÒÔʵÏÖÕâ¸ö¹¦ÄÜ¡£App.PreInstance ÊÇÒ»¸öbooleanÐ͵ÄÖµ¡£Èç¹ûÆäֵΪTrue˵Ã÷³ÌÐòÒÑÓÐÒ»¸öʵÀýÔÚÔËÐУ¬Èç¹ûΪFalseÄÇô£¬³ÌÐò¿ÉÒÔÔËÐС£ ÎÒÃÇ¿ÉÒÔÔÚ¶Ô´°ÌåÔØÈëʼþ±à³Ì£¬À´ÊµÏÖÕâ¸ö¹¦ÄÜ,´úÂëÈçÏ rivate sub Form1_load() If App.PreInstance = True then MsgBox ¡°³ÌÐòÒѾÔËÐУ¡¡± Unload me End if End sub Èý¡¢Delphi,C++Builder µÄʵÏÖ ÎÒûÓз¢ÏÖDelphi ºÍC++Builder µÄ±àÒëÆ÷ÓÐʵÏÖÏñVCÒ»ÑùµÄ¹¦ÄÜ¡£ËùÒÔÎÒÃÇ¿ÉÒÔµ÷ÓÃCreateMutexÀ´ÊµÏÖÕâ¸ö¹¦ÄÜ¡£ CreateMutext(),GetLastError()ÕâÁ½¸öº¯ÊýµÄÏêϸÐÅÏ¢¿ÉÒԲο¼MSDN. [ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-29 at 07:41 ] |
» ²ÂÄãϲ»¶
ÇóÖúµ÷¼Á£¬¿çµ÷
ÒѾÓÐ16È˻ظ´
»¯¹¤Ñ§Ë¶294·Ö£¬Çóµ¼Ê¦ÊÕÁô
ÒѾÓÐ30È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
¿¼ÑÐÇóµ÷¼Á
ÒѾÓÐ13È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
È˹¤ÖÇÄÜ320µ÷¼Á08¹¤À໹Óлú»áÂð
ÒѾÓÐ17È˻ظ´
¿¼ÑÐÓ¢Ò»ÊýÒ»338·Ö
ÒѾÓÐ10È˻ظ´
085600²ÄÁÏÓ뻯¹¤329·ÖÇóµ÷¼Á
ÒѾÓÐ20È˻ظ´
085600²ÄÁÏÓ뻯¹¤349·ÖÇóµ÷¼Á
ÒѾÓÐ15È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ13È˻ظ´















rivate sub Form1_load()
»Ø¸´´ËÂ¥