在vc++ 中程式設計中,只執行乙個例項的方法主要有兩類:
1 遍歷當前的所有視窗,查詢相同的例項。為了便於查詢,一般要事先設乙個查詢標誌。
2 利用系統提供的互斥物件或信標,直接讓系統抑制重複的例項。
在發現重複執行時,一般還有乙個任務,就是啟用已經存在的視窗。
一、 第一類方法的實現
下面是乙個具體的例子,下圖是示例**執行的情況。
部分關鍵**
1 hwnd oldhwnd =null;23 enumwindows(enumwndproc,(lparam)&oldhwnd); //
列舉所有執行的視窗45
if(oldhwnd !=null)67
2、新增enumwndproc視窗過程函式://通過自定義的屬性名查詢同類例項視窗
1 cstring g_szpropname = "your prop name
"; //
自己定義乙個屬性名
23 handle g_hvalue = (handle)1; //
自己定義乙個屬性值45
67bool callback enumwndproc(hwnd hwnd,lparam lparam)89
2223
return
true;24
25 }
3、在主視窗的 oninitdialog()中新增屬性 //設定視窗屬性
1 setprop(m_hwnd,g_szpropname,g_hvalue);
2丶第二種方法:
控制台下:
1handle mutex;
23 mutex = createmutex(null, true, "me"
);45if(getlasterror() ==error_already_exists)67
1415
else
1617
mfc下:
1231819
else
2021
2627…28
29 }
程序只執行乙個例項
守護程序往往需要設定使其只執行乙個例項,這裡展示檔案鎖的方式實現 1.使用fcntl 函式設定檔案鎖 include include include include include include include int main else pause return 0 2.使用flock 設定鎖 ...
C winform 只執行乙個例項視窗
using system using system.windows.forms using system.diagnostics using system.runtime.interopservices using system.reflection namespace emailoperation...
MFC只執行乙個例項視窗
在編寫mfc程式的時候,有些時候需要程式只能執行乙個例項。需要實現這樣功能,首先要阻止多個例項的執行,並將執行了的例項放置到最前面。本篇文章中採用互斥量來實現。只執行乙個例項 if getlasterror error already exists 檢查互斥量物件名稱是否已經存在 pwnd pwnd...