MFC如何判斷乙個程序已經存在

2021-07-23 00:15:48 字數 1089 閱讀 6107

通俗的講,createmutex就是用來判定是否存在乙個指定的程序。呵呵,這樣就很好理解了。【mfc】判斷乙個指定的程序是否存在--createmutex()

createmutex()

說明:建立乙個互斥體(mutex)

返回值:

long,如執行成功,就返回互斥體物件的控制代碼;

零表示出錯。會設定getlasterror。即使返回的是乙個有效控制代碼,但倘若指定的名字已經存在,getlasterror也會設為error_already_exists

參數列引數 型別及說明

lpmutexattributes security_attributes,指定乙個security_attributes結構,或傳遞零值(將引數宣告為byval as long,並傳遞零值),表示使用不允許繼承的預設描述符.

binitialowner long,如建立程序希望立即擁有互斥體,則設為true。乙個互斥體同時只能由乙個執行緒擁有

lpname string,指定互斥體物件的名字。用vbnullstring建立乙個未命名的互斥體物件。如已經存在擁有這個名字的乙個事件,則開啟現有的已命名互斥體。這個名字可能不與現有的事件、訊號機、可等待計時器或檔案對映相符

註解: 

一旦不再需要,注意必須用closehandle函式將互斥體控制代碼關閉。從屬於它的所有控制代碼都被關閉後,就會刪除物件程序中止前,一定要釋放互斥體,如不慎未採取這個措施,就會將這個互斥體標記為廢棄,並自動釋放所有權。共享這個互斥體的其他應用程式也許仍然能夠用它,但會接收到乙個廢棄狀態資訊,指出上乙個所有程序未能正常關閉。這種狀況是否會造成影響取決於涉及到的具體應用程式

***::oninitdialog() //***::initinstance()

handle dlghandle = ::createmutex( null, false, _t("processtest.exe"));

if( getlasterror() == error_already_exists )

afxmessagebox("該應用程式已經存在!");

this->enddialog( 1 ); // return false;

closehandle( dlghandle );

如何判斷乙個物件已經無效

引用計數法 給物件中新增乙個引用計數器,每當有乙個地方引用它,計數器就加 1 當引用失效,計數器就減 1 任何時候計數器為 0 的物件就是不可能再被使用的。這個方法實現簡單,效率高,但是目前主流的虛擬機器中並沒有選擇這個演算法來管理記憶體,其最主要的原因是它很難解決物件之間相互迴圈引用的問題。可達性...

判斷乙個類是否存在

我們在開發的過程中難免會用到低版本中沒有的類,如果我們想讓我們的應用盡可能的相容多個版本,我們需要考慮 如果我們使用的類在低版本中沒有怎麼辦呢。class pkclass nsclassfromstring pkaddpassesviewcontroller if pkclass else nsst...

判斷乙個類是否存在

我們在開發的過程中難免會用到低版本中沒有的類,如果我們想讓我們的應用盡可能的相容多個版本,我們需要考慮 如果我們使用的類在低版本中沒有怎麼辦呢。class pkclass nsclassfromstring pkaddpassesviewcontroller if pkclass else nsst...