Πώς να χρησιμοποιήσετε ένα mutex σε Visual Basic

ψήφοι
21

Έχω εισαχθεί η kernel32βιβλιοθήκη. Έτσι, έχω το createMutexδιαθέσιμο λειτουργία, αλλά δεν είμαι βέβαιος από τις διάφορες παραμέτρους και τις τιμές επιστροφής.

Αυτό είναι το κλασικό Visual Basic, δεν Visual Basic.NET, αλλά εγώ κατά πάσα πιθανότητα μπορεί να λειτουργήσει με οποιαδήποτε γλώσσα με τη μορφή μιας απάντησης.

Δημοσιεύθηκε 04/08/2008 στις 02:22
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
9

Εδώ είναι οι δηλώσεις VB6 για CreateMutex - Τους αντιγραφεί ακριβώς από το πρόγραμμα προβολής API, το οποίο θα πρέπει να έχετε ως μέρος της εγκατάστασης VB6 σας. VB6 Marshalls χορδές σε μηδενικού τερματισμού 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

Λάβετε υπόψη ότι αν δημιουργήσετε ένα mutex από τον IDE VB6, το mutex ανήκει στον IDE και δεν θα καταστραφούν όταν σταματήσει το πρόγραμμά σας - μόνο όταν κλείνετε το IDE.

Απαντήθηκε 17/09/2008 στις 13:01
πηγή χρήστη

ψήφοι
7

Ο κώδικας VB μοιάζει κάπως έτσι:

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

Η πρώτη παράμετρος είναι ένας δείκτης σε μια SECURITY_ATTRIBUTESδομή. Αν δεν ξέρετε τι είναι αυτό, δεν το χρειάζονται. Περάστε NULL (0).

Η δεύτερη παράμετρος είναι TRUE(μη μηδενική, ή 1) εάν το νήμα κλήσης θα πρέπει να λάβει την κυριότητα του mutex. FALSEσε διαφορετική περίπτωση.

Η τρίτη παράμετρος είναι το όνομα mutex και μπορεί να είναι NULL (0), όπως φαίνεται. Αν χρειάζεστε ένα ονομάζεται mutex, να περάσει το όνομα (κάτι μοναδικό) στο. Δεν είστε σίγουροι για το αν οι VBκριτές περιτύλιγμα το μήκος-πρόθεμα VBτύπου συμβολοσειράς ( BSTR) πάνω σε μηδενικού τερματισμού Ascii / Unicode εγχόρδων, αν όχι, θα πρέπει να το κάνουμε αυτό και πολλά παραδείγματα είναι εκεί έξω.

Καλή τύχη!

Απαντήθηκε 04/08/2008 στις 05:58
πηγή χρήστη

ψήφοι
2

Λοιπόν, με βάση την τεκμηρίωση που μοιάζει με:

  1. χαρακτηριστικά ασφαλείας (μπορεί να περάσει null)
  2. Είτε πρόκειται για αρχικά ιδιοκτησία (μπορεί να περάσει ψευδής)
  3. Το όνομα της είναι

HTH

Απαντήθηκε 04/08/2008 στις 05:48
πηγή χρήστη

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