首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

VB 實現單實例運行並自動激活首個實例

     編輯:關於ASP.NET

使用互斥體保證程序全局唯一運行,結合 API 獲取並激活首個實例窗口,支持閃爍提醒,附完整核心代碼邏輯。

核心技術點

  1. 互斥體檢測唯一性:啟動時 CreateMutex,若 GetLastError = ERROR_ALREADY_EXISTS 則已有實例運行
  2. 首實例句柄持久化:首次運行將主窗口句柄 hWnd 寫入文件/註冊表
  3. 激活與閃爍:後續啟動讀取句柄,調用 SetForegroundWindow + FlashWindowEx 閃爍指定次數/頻率

關鍵 API

  • CreateMutex / OpenMutex:創建/打開命名互斥體
  • FindWindow:按類名/標題查找窗口(標題可變不可靠)
  • SetForegroundWindow / ShowWindow / FlashWindowEx:激活與閃爍
  • GetWindowThreadProcessId:驗證句柄有效性

優於 App.PrevInstance 的優勢

互斥體基於內核對象,跨目錄複製 EXE 仍能檢測衝突;文件存儲句柄避免標題變化導致 FindWindow 失效;FlashWindowEx 無需定時器即可實現多次閃爍。

應用場景

播放器、即時通訊、工具類程序防止多開,提升用戶體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved