Сведения о вопросе

Mathprofi

16:03, 1st July, 2020

Теги

vb6    

Как использовать mutex в Visual Basic

Просмотров: 403   Ответов: 3

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

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



  Сведения об ответе

lourence

18:03, 1st July, 2020

Вот объявления VB6 для CreateMutex - я только что скопировал их из средства просмотра API, которое должно быть частью вашей установки VB6. VB6 маршалы строк null-прекращено 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

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


  Сведения об ответе

+-*/

18:03, 1st July, 2020

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

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

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

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

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

Удачи вам!


  Сведения об ответе

$DOLLAR

18:03, 1st July, 2020

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

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

HTH


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться