VB 避免程式二次運行

來源:互聯網
上載者:User
Private Sub Form_Load()
If App.PrevInstance Then
    MsgBox "程式已在運行。", vbInformation, "系統"
    End
End If
End Sub

以上這種方法,是只針對於同目錄同名的程式,下面還有一種方法是通過API函數實現的,不論程式怎麼改名都不可以多開的。

 

Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long 
Private Type SECURITY_ATTRIBUTES 
        nLength As Long 
        lpSecurityDescriptor As Long 
        bInheritHandle As Long 
End Type 

Private Const ERROR_ALREADY_EXISTS = 183& 

Private Sub Form_Load() 
    Dim sa As SECURITY_ATTRIBUTES 
    sa.bInheritHandle = 1 
    sa.lpSecurityDescriptor = 0 
    sa.nLength = Len(sa) 
    Call CreateMutex(sa, 1, App.Title) 
    If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then 
        MsgBox "程式已在運行。", vbInformation, "系統"
        End
    End If 
End Sub

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.