Как использовать мьютекс в Visual Basic
Я импортировал библиотеку kernel32
. Итак, у меня есть функция createMutex
, но я не совсем уверен в различных параметрах и возвращаемых значениях.
Это классический Visual Basic, а не Visual Basic.NET, но я, вероятно, могу работать с любым языком в форме ответа.
Ответы
Ответ 1
Код VB выглядит примерно так:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
Первый параметр - указатель на структуру SECURITY_ATTRIBUTES
. Если вы не знаете, что это такое, вам это не нужно. Pass NULL (0).
Второй параметр TRUE
(ненулевой или 1), если вызывающий поток должен принять участие в мьютексе. FALSE
в противном случае.
Третий параметр - это имя мьютекса и может быть NULL (0), как показано. Если вам нужен именованный мьютекс, передайте имя (что-то уникальное). Не уверен, что оболочка VB
упорядочивает строковый тип длины VB
длиной VB
до нулевой строки Ascii/Unicode, если нет, вам нужно будет сделать это, и там будут многочисленные примеры.
Удачи!
Ответ 2
Здесь объявления VB6 для CreateMutex - я просто скопировал их из средства просмотра API, которое вы должны иметь как часть вашей установки VB6. VB6 переводит строки в ANSI с нулевым завершением с использованием текущей кодовой страницы.
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" _
(lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, _
ByVal lpName As String) As Long
Имейте в виду, что если вы создаете мьютекс из VB6 IDE, мьютекс относится к среде IDE и не будет уничтожен при прекращении работы вашей программы - только при закрытии среды IDE.
Ответ 3
Хорошо, основываясь на документации, он выглядит так:
- Атрибуты безопасности (могут передавать null)
- Изначально ли он принадлежал (может пройти false)
- Имя его
НТН