Как использовать мьютекс в 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)
  • Имя его

НТН