⑴ 易語言怎麼防止多開,,當程序已經打開時再要打開一個的時候原來的程序置頂,不打開新的程序
.版本 2
.子程序 __啟動窗口_創建完畢
.局部變數 局_互斥體, 文本型
局_互斥體 = 「這里隨便填,要復雜點的」
.如果真 (API打開事件同步對象 (2031619, 假, 局_互斥體) ≠ 0)
API控制窗口狀態 (取數值注冊項 (3, 「wodechengxu」, ), 1)
結束 ()
.如果真結束
API創建事件同步對象 (0, 假, 假, 局_互斥體)
寫注冊項 (3, 「wodechengxu」, _啟動窗口.取窗口句柄 ())
『以下是DLL:
.版本 2
.DLL命令 API打開事件同步對象, 整數型, , "OpenEventA", , 禁止多開DLL
.參數 填2031619, 整數型, , dwDesiredAccess
.參數 假, 邏輯型, , bINheritHandle
.參數 資源名稱, 文本型, , LpName
.DLL命令 API創建事件同步對象, , , "CreateEventA", , 禁止多開DLL
.參數 事件屬性0, 整數型, , LpEventAttributes
.參數 手動復位, 邏輯型, , bManualReset
.參數 初始狀態, 邏輯型, , bInitialstate
.參數 資源名稱, 文本型, , LpName
.DLL命令 API控制窗口狀態, 整數型, , "ShowWindow", , 控制窗口的狀態(在vb里使用:針對vb窗體及控制項,請使用對應的vb屬性) 成功:返回TRUE(非零),失敗:返回FALSE(零)
.參數 hwnd, 整數型, , 窗口句柄,要向這個窗口應用由命令
.參數 nCmdShow, 整數型, , 為窗口指定的一個命令。請用下述任何一個常數:0 隱藏取消激活 1 還原激活 2 最小化激活 3 最大化激活 4 還原 6 最小化取消激活 7 最小化 9 還原激活
4樓是個腦殘,題目都沒看青就在那回答,自己不懂還裝懂
⑵ 如何防止程序多開
就是慢慢對抗折騰常規的多開就像你說的findwindowcreatemutex等進程-這里可以共享節另外激活自己之前進程的動作最好隱藏好檢測代碼vm一下,最好再效驗下kernerl32,防止它hook
findwindow或者createmutex等函數來繞過
⑶ 如何防止程序多開
比較簡單的方法:使用使用互斥量(Mutex)。以Winform App為例,主要代碼如下:
static class Program{ [STAThread] static void Main() { bool createNew; using (Mutex mutex = new Mutex(true, Application.ProctName, out createNew)) { if (createNew) { Application.EnableVisualStyles(); Application.(false); Application.Run(new Form1()); } else { // 程序已經運行,顯示提示後退出 MessageBox.Show("應用程序已經運行!"); } } }}