只執行乙個例項的方法

2021-06-19 06:18:02 字數 1134 閱讀 8630

在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丶第二種方法:

控制台下:

1

handle mutex;

23 mutex = createmutex(null, true, "me"

);45if(getlasterror() ==error_already_exists)67

1415

else

1617

mfc下:

123

1819

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...