커널32라이브러리를 가져왔습니다. 그래서
createMutex` 함수를 사용할 수 있지만 다양한 매개 변수와 반환 값에 대해 잘 모르겠습니다.
이것은 Visual Basic.NET이 아닌 고전적인 Visual Basic이지만 아마도 대답의 형태로 두 언어 모두로 작업 할 수 있습니다.
다음은 CreateMutex에 대한 VB6 선언입니다. VB6 설치의 일부로 제공되어야 하는 API 뷰어에서 방금 복사한 것입니다. 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를 닫을 때만 파괴된다는 점에 유의하세요.
VB 코드는 다음과 같습니다:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
첫 번째 매개변수는 SECURITY_ATTRIBUTES
구조체에 대한 포인터입니다. 이것이 무엇인지 모른다면 필요하지 않습니다. NULL(0)을 전달합니다.
두 번째 매개 변수는 호출 스레드가 뮤텍스의 소유권을 가져야 하는 경우 TRUE
(0이 아니거나 1)입니다. 그렇지 않으면 FALSE
입니다.
세 번째 매개 변수는 뮤텍스 이름이며, 그림과 같이 NULL(0)일 수 있습니다. 이름이 지정된 뮤텍스가 필요한 경우 이름(고유한 이름)을 전달합니다. VB래퍼가 길이 접두사가 붙은
VB문자열 유형(
BSTR`)을 널로 끝나는 아스키/유니코드 문자열로 마샬링하는지 여부는 확실하지 않지만, 그렇지 않은 경우 직접 수행해야 하며 많은 예제가 나와 있습니다.
행운을 빕니다!