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

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

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

22 vb6
4.08.2008 01:22:49
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

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

Удачи!

7
7.02.2013 13:22:14

Вот декларации 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

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

9
14.08.2009 15:14:45

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

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

НТН

1
15.12.2014 11:38:40