26

我已经导入了kernel32库。所以,我有createMutex可用的函数,但我不太确定各种参数和返回值。

这是经典的 Visual Basic,而不是 Visual Basic.NET,但我可能可以以答案的形式使用任何一种语言。

4

3 回答 3

10

这是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 时才会销毁。

于 2008-09-17T12:01:56.643 回答
8

VB 代码如下所示:

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

第一个参数是指向SECURITY_ATTRIBUTES结构的指针。如果你不知道它是什么,你就不需要它。传递 NULL (0)。

如果调用线程应该取得互斥锁的所有权,则第二个参数是TRUE(非零或 1)。FALSE除此以外。

第三个参数是互斥体名称,可以为 NULL (0),如图所示。如果您需要一个命名的互斥锁,请将名称(任何唯一的)传入。不确定包装器是否VB将长度前缀VB字符串类型(BSTR并且有很多例子。

祝你好运!

于 2008-08-04T04:58:40.300 回答
1

好吧,根据文档,它看起来像:

  1. 安全属性(可以传递 null)
  2. 是否最初拥有(可以传递假)
  3. 它的名字

高温高压

于 2008-08-04T04:48:40.697 回答