note 檢測並啟用已經執行的例項

2021-06-21 11:02:49 字數 1226 閱讀 6879

年前參加乙個外包專案時, 也需要用到檢測並啟用已經執行的例項。

由於專案經理不是搞c的, 雜七雜八的事也挺多,從來沒人看**. 當時花了半小時,搞了乙個特土鱉的方法實現。

也只能這樣,  大家都在看結果. 不用土鱉的方法,用啥呢?

用ini檔案的鍵值作為互動,新例項執行後,發現舊例項存在,向ini中寫入標識,請啟用~, 然後新例項退出.

舊例項開了乙個執行緒,每隔一秒檢測一下ini, 如果看到"請啟用的標記", 顯示到前台(假設是最小化或隱藏的情況), 然後清掉"請啟用"標記.

今天我負責的專案被要求加上這個小功能,這次搞了乙個 event  + 執行緒檢測的方法,看著文明多了~

程式入口檢測和建立互斥量和事件.

int entry_twinmain(hinstance hinstance,

hinstance hprevinstance,

lptstr lpcmdline,

int ncmdshow)

return 0;

}ns_base::fncreateevent(event_name_instance_active, g_heventactive);

///...

後台執行緒檢測

/// 一般性後台任務

while (!isneedquitthreadbgtask())

if (wait_object_0 == ::waitforsingleobject(g_heventactive, 0))

/// ...

工具函式

bool mutextrunonce(const wchar * pcmutexname, handle & hmutex)

return true;

}bool isalreadyrunonce(const wchar * pcmutexname, handle & hmutex)

return false;

}bool ismutextexist(const wchar * pcmutexname)

bool fncreateevent(const wchar * pceventname, handle & hevent)

bool fnopenevent(const wchar * pceventname, handle & hevent)

檢測系統是否已經執行了相同的程式

using system using system.xml using system.ponentmodel using system.windows.forms using system.diagnostics using system.runtime using system.reflectio...

如何啟用MySQL的SQL執行記錄並記錄log

在mysql命令列或者客戶端管理工具中執行 show variables like general log 結果 off說明沒有開啟日誌記錄 分別執行開啟日誌以及日誌路徑和日誌檔名 set global general log file opt lampp var mysql izbp1ffbdhm...

程式只執行一次並啟用原來的程式

我們的程式有時候只允許執行一次,並且最好的情況是,如果程式第二次執行,就啟用原來的程式。網上有很多的方法實現程式只執行一次,但對於啟用原來的視窗卻都不怎麼好。關鍵就在於啟用原來的程式,一般的做法是在工程開始時,開啟互斥量物件,如果打不開表示程式還沒有執行,建立乙個互斥量物件 如果打得開表示程式已經執...