На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: SCINER, B.V.
  
    > Как запретить запуск двух копий программ
      ExpandedWrap disabled
        Private Sub Form_Load()
          If App.PrevInstance Then End
        End Sub
      Сообщение отредактировано: Andrey_Kun -
        Есть еще вариант - создавать мутекс, главное правильно делать:

        ExpandedWrap disabled
          Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
          Private Declare Function CloseHandle Lib "kernel32" (ByVal Handle As Long) As Long
           
          Private Const ERROR_ALREADY_EXISTS = 183&
          Private Type SECURITY_ATTRIBUTES
                  nLength As Long
                  lpSecurityDescriptor As Long
                  bInheritHandle As Long
          End Type
          Dim hMutex As Long
           
          Private Sub Form_Load()
          Dim sa As SECURITY_ATTRIBUTES
          sa.bInheritHandle = 1
          sa.lpSecurityDescriptor = 0
          sa.nLength = Len(sa)
           
          hMutex = CreateMutex(sa, False, "hcs app.previnstance research")
          If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
              MsgBox "Одна копия программы уже запущена! Данный экземпляр будет выгружен..."
              Unload Me
          End If
          End Sub
           
          Private Sub Form_Unload(Cancel As Integer)
          CloseHandle hMutex
          End Sub
        Сообщение отредактировано: SCINER -
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0202 ]   [ 15 queries used ]   [ Generated: 14.05.24, 14:23 GMT ]