2008-08-04 2 views
20

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

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

ответ

7

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

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

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

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

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

Удачи вам!

2

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

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

HTH

9

Вот объявления 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.

 Смежные вопросы

  • Нет связанных вопросов^_^