Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
ElektriK
-
- Начинающий
-
-
- Сообщения: 5
- Зарегистрирован: 12.12.2005 (Пн) 20:53
- Откуда: Екатеринбург
ElektriK » 13.12.2005 (Вт) 17:33
Все мы сталкиваемся с простой задачей: не дать юзеру запустить копию программы. Вот это работает:
If App.PrevInstance = True Then
MsgBox "программа уже запущена!", vbExclamation
Exit Sub
End If
Но если сделать копию программы с другим названием, то она очень замечательно открывается и продвинутый юзер получит 2 копии одной программы.
И все же как тогда избежать открытие копии программы?
-
Amed
-
- Алфизик
-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 13.12.2005 (Вт) 17:38
- Код: Выделить всё
'Code by Adam Verwijs
Const ERROR_ALREADY_EXISTS = 183&
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As Any, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
Dim hMutex As Long
'Try to create a new Mutex
hMutex = CreateMutex(ByVal 0&, 1, App.Title)
'Did the mutex already exist?
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
'Clean up
ReleaseMutex hMutex
CloseHandle hMutex
'More than one instance detected
MsgBox "More than one instance"
End
Else
'form load code
End If
End Sub
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: SemrushBot и гости: 15