C 實現單例項程式

2021-09-07 20:28:12 字數 855 閱讀 4142

原文:

c# 實現單例項程式

在我們經常使用的軟體中,當我們已經開啟後,再次開啟時,有的軟體不會出現兩個。例如有道詞典,會將上次的介面顯示出來,或者提示我們「該程式已經執行...」。我通過乙個簡單的c# wpf例子來說明。

首先我們要了解一下執行緒中的互斥體(mutex),引用msdn官方文件解釋,這是乙個同步基元,可以用於程序間同步。請參考下面的**:

public

}

另一種情況是再執行該程式時,直接把剛才的程式顯示出來(可能此時程式已經最小化到工作列)。 實現思路:先找到當前的process,然後呼叫showwindow方法,把隱藏或者最小化的窗體進行顯示。請參考下面的**:

[dllimport("

user32.dll")]

private

static

extern

bool showwindow(intptr hwnd, int

ncmdshow);

public

// }

}

此時當我們再次執行程式時,會將第一次執行的例項調出來進行顯示。比現實「該程式已經執行...」和諧多了。

update:

今天開始寫乙個新的專案時,也是需要做成單個例項。同樣的**,但是卻可以同時執行多個。開發環境win10 pro 64bit,但是整個人就凌亂了。後來查閱資料:

在專案根目錄下新建乙個program類,並且將啟動專案設定為program類,**如下:

class

program

// //}

else

}}

單例程式的實現

一 利用訊號量實現程序間 如下 handle hsem createsemaphore null,1,1,m pszexename 建立命名的訊號量 訊號量存在,則程式已有乙個例項執行 if getlasterror error already exists 將主窗啟用 setforegroundw...

Qt單例項程式 防止程式多開

使用qlocalserver,qlocalsocket實現單例項程序,當已經存在相同程序時且視窗未啟用 遮擋,最小化,托盤 時,啟用程序主視窗。參考文章 class qlocalserver brunning false localserver null mainwindow null 說明 通過s...

select 例項程式

select.c created on 2011 11 7 author lc include include include include include int main if fds 1 open file2 o creat o rdwr,0666 0 if count write fds ...