26

ライブラリをインポートしましたkernel32。そのため、createMutex関数を使用できますが、さまざまなパラメーターと戻り値がよくわかりません。

これは古典的なVisualBasicであり、Visual Basic.NETではありませんが、おそらくどちらの言語でも回答の形で作業できます。

4

3 に答える 3

10

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 を閉じたときにのみ破棄されることに注意してください。

于 2008-09-17T12:01:56.643 に答える
8

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文字列にマーシャリングするかどうかわからない場合は、それを行う必要があります。そして多くの例がそこにあります。

幸運を!

于 2008-08-04T04:58:40.300 に答える
1

ドキュメントに基づくと、次のようになります。

  1. セキュリティ属性(nullを渡すことができます)
  2. それが最初に所有されているかどうか(falseを渡すことができます)
  3. その名前

HTH

于 2008-08-04T04:48:40.697 に答える