Как использовать мьютекс в Visual Basic

StackOverflow https://stackoverflow.com/questions/947

  •  08-06-2019
  •  | 
  •  

Вопрос

Я импортировал kernel32 библиотека.Итак, у меня есть createMutex функция доступна, но я не совсем уверен в различных параметрах и возвращаемых значениях.

Это классический Visual Basic, а не визуальный Basic.NET но я, вероятно, смогу работать с любым языком в форме ответа.

Это было полезно?

Решение

Код VB выглядит примерно так:

hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)

Первый параметр - это указатель на SECURITY_ATTRIBUTES структура.Если вы не знаете, что это такое, вам это не нужно.Передайте значение NULL (0).

Вторым параметром является TRUE (ненулевое значение или 1), если вызывающий поток должен стать владельцем мьютекса. FALSE в противном случае.

Третий параметр - это имя мьютекса, и он может иметь значение NULL (0), как показано на рисунке.Если вам нужен именованный мьютекс, передайте в него имя (что угодно уникальное).Не уверен, что VB обертка маршалирует с префиксом длины VB строковый тип (BSTR) перейдите к строке Ascii / Unicode с нулевым завершением, если нет, вам нужно будет это сделать, и там есть множество примеров.

Удачи вам!

Другие советы

Вот объявления VB6 для Создайте Mutex - Я просто скопировал их из средства просмотра 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

Имейте в виду, что если вы создаете мьютекс из IDE VB6, мьютекс принадлежит IDE и не будет уничтожен при прекращении запуска вашей программы - только при закрытии IDE.

Ну, основываясь на Документация это выглядит так:

  1. Атрибуты безопасности (могут передавать значение null)
  2. Принадлежит ли он изначально (может передавать false)
  3. Как это называется

HTH

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top