只啟動乙個程式例項,如果已執行則調到前端

2021-06-20 05:00:26 字數 645 閱讀 1826

1. 設定互斥量,並查詢視窗,在initinstance()函式中實現

handle hsingleton = createmutex(null, false, szmutexname);

if(getlasterror() == error_already_exists)

::setforegroundwindow(hwndprevious);//啟用主視窗
::setforegroundwindow(::getlastactivepopup(hwndprevious));//啟用主視窗的對話方塊
return false;//退出本例項
}
hwndprevious = ::getwindow(hwndprevious, gw_hwndnext);//查詢下乙個視窗

}

return false;//前乙個例項已經存在,但找不到其主視窗,退出例項

}

2. 設定標記,在mainframe的oncreate()函式中
3. 在程式關閉時去掉標記,可在onclose()函式中實現

vc 只執行乙個例項,並啟用已執行例項

程序的互斥執行 createmutex函式實現只執行乙個程式例項 正常情況下,乙個程序的執行一般是不會影響到其他正在執行的程序的。但是對於某些有特殊要求的如以獨佔方式使用序列口等硬體裝置的程式就要求在 其程序執行期間不允許其他試圖使用此埠裝置的程式執行的,而且此類程式通常也不允許執行同乙個程式的多個...

讓程式只執行乙個例項(C )

通常我們會遇到這樣的情況,讓程式只執行乙個例項,比如啟動防毒軟體時,只能啟動乙個,再啟動的話就沒什麼效果!利用程式名來判斷不是乙個好辦法,如果我們把程式名稱改一下就可以執行兩個完全一樣的程序。我們最好利用程式集的attribute存放特定資訊,然後用assembly物件的getcustomattri...

程式只執行乙個例項,並啟用前乙個例項

實現程式只執行一次的方法很多,但是原理都是一樣的,就是執行第一次的時候設定乙個標記,每次執行的時候檢查該標記,如果有就說明已經執行了。具體實現 1 在程式初始化的時候 initinstance 列舉所有的視窗,查詢本程式的例項是否存在 2 在主視窗初始化的時候在本視窗的屬性列表中新增乙個標記,以便程...