我导入了这个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
Run Code Online (Sandbox Code Playgroud)
请记住,如果从VB6 IDE创建互斥锁,则互斥锁属于IDE,并且在您停止运行程序时不会被销毁 - 仅当您关闭IDE时.
小智 7
VB代码看起来像这样:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
Run Code Online (Sandbox Code Playgroud)
第一个参数是指向SECURITY_ATTRIBUTES结构的指针.如果你不知道它是什么,你就不需要它.传递NULL(0).
TRUE如果调用线程应取得互斥锁的所有权,则第二个参数是(非零或1).FALSE除此以外.
第三个参数是互斥锁名称,可以是NULL(0),如图所示.如果你需要一个命名的互斥锁,请传入名称(任何唯一的).不确定VB包装器是否将长度为前缀的VB字符串type(BSTR)封送到以null结尾的Ascii/Unicode字符串,否则,你需要这样做那里有很多例子.
祝好运!
| 归档时间: |
|
| 查看次数: |
7731 次 |
| 最近记录: |