ライブラリをインポートしましたkernel32
。そのため、createMutex
関数を使用できますが、さまざまなパラメーターと戻り値がよくわかりません。
これは古典的なVisualBasicであり、Visual Basic.NETではありませんが、おそらくどちらの言語でも回答の形で作業できます。
CreateMutexの VB6 宣言は次のとおりです。VB6インストールの一部として必要な API ビューアーからコピーしたものです。VB6 は、現在のコード ページを使用して文字列を null で終わる 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)を渡します。
2番目のパラメーターはTRUE
、呼び出し元のスレッドがミューテックスの所有権を取得する必要がある場合は(ゼロ以外、または1)です。FALSE
そうでなければ。
3番目のパラメーターはミューテックス名であり、示されているようにNULL(0)の場合があります。名前付きミューテックスが必要な場合は、名前(一意のもの)を渡します。VB
ラッパーが長さプレフィックス付きのVB
文字列型(BSTR
)をnullで終了するAscii / Unicode文字列にマーシャリングするかどうかわからない場合は、それを行う必要があります。そして多くの例がそこにあります。
幸運を!