I have imported the kernel32
library. So, I have the createMutex
function available but I am not quite sure of the various parameters and return values.
This is classic Visual Basic, not Visual Basic.NET but I can probably work with either language in the form of an answer.
Here's the VB6 declarations for CreateMutex - I just copied them from the API viewer, which you should have as part of your VB6 installation. VB6 marshalls strings to null-terminated ANSI using the current code page.
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
Bear in mind that if you create a mutex from the VB6 IDE, the mutex belongs to the IDE and won't be destroyed when you stop running your program - only when you close the IDE.
The VB code looks something like this:
hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)
The first parameter is a pointer to an SECURITY_ATTRIBUTES
structure. If you don't know what it is, you don't need it. Pass NULL (0).
The second parameter is TRUE
(non-zero, or 1) if the calling thread should take ownership of the mutex. FALSE
otherwise.
The third parameter is the mutex name and may be NULL (0), as shown. If you need a named mutex, pass the name (anything unique) in. Not sure whether the VB
wrapper marshals the length-prefixed VB
string type (BSTR
) over to a null-terminated Ascii/Unicode string if not, you'll need to do that and numerous examples are out there.
Good luck!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With