2008-08-04 26 views
20

kernel32ライブラリをインポートしました。だから、私はcreateMutex関数が利用可能ですが、私は様々なパラメータと戻り値の非常によく分かりません。Visual Basicでのミューテックスの使用方法

これはVisual Basic .NETではなく、古典的なVisual Basicですが、おそらくいずれかの言語で回答の形で作業できます。

答えて

7

VBコードは次のようになります。

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

最初のパラメータは、SECURITY_ATTRIBUTES構造体へのポインタです。それが何であるか分からなければ、あなたはそれを必要としません。 NULL(0)を渡します。

呼び出し元のスレッドがmutexの所有権を取得する必要がある場合、2番目のパラメータはTRUE(非ゼロ、または1)です。それ以外の場合はFALSEです。

3番目のパラメータはミューテックス名で、示されているようにNULL(0)です。名前付きのミューテックスが必要な場合は、名前に何かユニークな名前を渡します。VBラッパーが長さ接頭辞VBの文字列タイプ(BSTR)をヌル終了Ascii/Unicode文字列にマーシャリングするかどうかは不明ですが、これを行うには多くの例があります。

幸運を祈る!

2

まあ、それがどのように見えるdocumentationに基づく:

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

HTH

9

CreateMutexのVB6宣言は次のとおりです。私はVB6のインストールの一部として持っている必要があるAPIビューアからコピーしました。 VB6は現在のコードページを使用して文字列をヌル終了ANSIにマーシャリングします。あなたはIDEを閉じたときにのみ - あなたはVB6 IDEからのミューテックスを作成した場合、ミューテックスはIDEに属し、あなたのプログラムの実行を停止する際に破壊されないことを念頭に置い

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 

ベア。

関連する問題