我已经导入了kernel32
库。所以,我有createMutex
可用的函数,但我不太确定各种参数和返回值。
这是经典的 Visual Basic,而不是 Visual Basic.NET,但我可能可以以答案的形式使用任何一种语言。
这是CreateMutex的 VB6 声明- 我刚刚从 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 时才会销毁。
VB 代码如下所示:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
第一个参数是指向SECURITY_ATTRIBUTES
结构的指针。如果你不知道它是什么,你就不需要它。传递 NULL (0)。
如果调用线程应该取得互斥锁的所有权,则第二个参数是TRUE
(非零或 1)。FALSE
除此以外。
第三个参数是互斥体名称,可以为 NULL (0),如图所示。如果您需要一个命名的互斥锁,请将名称(任何唯一的)传入。不确定包装器是否VB
将长度前缀VB
字符串类型(BSTR
并且有很多例子。
祝你好运!