Hoe maak je een mutex in Visual Basic

stemmen
21

Ik heb de geïmporteerde kernel32bibliotheek. Dus, ik heb de createMutexfunctie beschikbaar, maar ik ben er niet helemaal zeker van de verschillende parameters en return waarden.

Dit is klassiek Visual Basic, niet Visual Basic.NET, maar ik kan waarschijnlijk werken met beide talen in de vorm van een antwoord.

De vraag is gesteld op 04/08/2008 om 02:22
bron van user
In andere talen...                            


3 antwoorden

stemmen
9

Hier is de VB6 verklaringen voor CreateMutex - ik ze gewoon gekopieerd van de API-viewer, die u als onderdeel van uw VB6 installatie zou moeten hebben. VB6 marshalls strings op null-beëindigd ANSI met de huidige code pagina.

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

Houd in gedachten dat als je een mutex vanuit de VB6 IDE maakt, de mutex behoort tot de IDE en zal niet worden vernietigd wanneer u stopt met het runnen van uw programma - alleen wanneer u de IDE sluiten.

antwoordde op 17/09/2008 om 13:01
bron van user

stemmen
7

De VB-code ziet er ongeveer als volgt uit:

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

De eerste parameter is een aanwijzer naar een SECURITY_ATTRIBUTESstructuur. Als je niet weet wat het is, heb je niet nodig. Pass NULL (0).

De tweede parameter is TRUE(niet-nul of 1) als de thread moet beschouwt de mutex nemen. FALSEanders.

De derde parameter is de naam mutex en kunnen NULL (0), zoals getoond. Als u een benoemde mutex nodig, pas de naam (iets unieks) in. Ik weet niet zeker of de VBwrapper marshals de lengte voorvoegsel VBstring type ( BSTR) over naar een op null eindigende Ascii / Unicodestring zo niet, dan moet je om dat te doen en tal van voorbeelden die er zijn.

Succes!

antwoordde op 04/08/2008 om 05:58
bron van user

stemmen
2

Nou ja, op basis van de documentatie van het eruit ziet:

  1. Veiligheid attributen (kan null passeren)
  2. Of het nu gaat in eerste instantie in handen (kan passeren false)
  3. De naam ervan

HTH

antwoordde op 04/08/2008 om 05:48
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more