Вопрос
Я импортировал 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.
Ну, основываясь на Документация это выглядит так:
- Атрибуты безопасности (могут передавать значение null)
- Принадлежит ли он изначально (может передавать false)
- Как это называется
HTH