begin process at 2012 05 27 07:20:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > PUBLIC SHARED SANS MODULE - VARIABLE SINGLETON : IDENTIFICATION D'INSTANCE D'OBJETS

PUBLIC SHARED SANS MODULE - VARIABLE SINGLETON : IDENTIFICATION D'INSTANCE D'OBJETS


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :singleton, shared, identifiant, incrémentation décrémentation, instance Niveau :Débutant Date de création :27/07/2009 Date de mise à jour :27/07/2009 16:53:31 Vu / téléchargé :2 439 / 189

Auteur : PCPT

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
un nom un peu barbare pour dire en fait : utiliser une variable entre différentes instances d'un objet

lorsque votre projet (form par exemple) utilise plusieurs instances d'une class ou d'un usercontrol, comment cet objet peut-il savoir laquelle de ces instances il représente?

c'est ici le but de cette source, un identifiant "unique" incrémentable, décrémentable, partagé entre un ou plusieurs modèles

le code est à copier directement dans votre objet

explications plus détaillées fournies avec le projet, code abondamment commenté

vous pouvez adapter le code sans trop de difficultés

Source

  • Private Function ReadMappingValue(ByVal hFileMappingObject As Long, ByRef lValue As Long) As Boolean
  • If hFileMappingObject = 0 Then
  • ' mauvais param, renvoyé par le précédent CreateFileMapping
  • Debug.Print "Erreur lors du CreateFileMapping"
  • Else
  • Dim lMVF As Long
  • lMVF = MapViewOfFile(hFileMappingObject, FILE_MAP_READ, 0&, 0&, 0&)
  • If lMVF = 0 Then
  • Debug.Print "Erreur lors du MapViewOfFile"
  • Else
  • ' lecture de la valeur
  • Call CopyMemory(lValue, ByVal lMVF, 4&)
  • ' fermeture de la vue
  • Call UnmapViewOfFile(lMVF)
  • ReadMappingValue = True
  • End If
  • End If
  • End Function
  • Private Function WriteMappingValue(ByVal hFileMappingObject As Long, ByRef lValue As Long) As Boolean
  • If hFileMappingObject = 0 Then
  • ' mauvais param, renvoyé par le précédent CreateFileMapping
  • Debug.Print "Erreur lors du CreateFileMapping"
  • Else
  • Dim lMVF As Long
  • lMVF = MapViewOfFile(hFileMappingObject, FILE_MAP_WRITE, 0&, 0&, 0&)
  • If lMVF = 0 Then
  • ' erreur
  • Debug.Print "Erreur lors du MapViewOfFile"
  • Else
  • ' écriture de la valeur
  • Call CopyMemory(ByVal lMVF, lValue, 4&)
  • ' fermeture de la vue
  • Call UnmapViewOfFile(lMVF)
  • WriteMappingValue = True
  • End If
  • End If
  • End Function
Private Function ReadMappingValue(ByVal hFileMappingObject As Long, ByRef lValue As Long) As Boolean
    If hFileMappingObject = 0 Then
'       mauvais param, renvoyé par le précédent CreateFileMapping
        Debug.Print "Erreur lors du CreateFileMapping"
    Else
        Dim lMVF As Long
        lMVF = MapViewOfFile(hFileMappingObject, FILE_MAP_READ, 0&, 0&, 0&)
        If lMVF = 0 Then
            Debug.Print "Erreur lors du MapViewOfFile"
        Else
'           lecture de la valeur
            Call CopyMemory(lValue, ByVal lMVF, 4&)
            
'           fermeture de la vue
            Call UnmapViewOfFile(lMVF)
            ReadMappingValue = True
        End If
    End If
End Function


Private Function WriteMappingValue(ByVal hFileMappingObject As Long, ByRef lValue As Long) As Boolean
    If hFileMappingObject = 0 Then
'       mauvais param, renvoyé par le précédent CreateFileMapping
        Debug.Print "Erreur lors du CreateFileMapping"
    Else
        Dim lMVF As Long
        lMVF = MapViewOfFile(hFileMappingObject, FILE_MAP_WRITE, 0&, 0&, 0&)
        If lMVF = 0 Then
'           erreur
            Debug.Print "Erreur lors du MapViewOfFile"
        Else
'           écriture de la valeur
            Call CopyMemory(ByVal lMVF, lValue, 4&)

'           fermeture de la vue
            Call UnmapViewOfFile(lMVF)
            WriteMappingValue = True
        End If
    End If
End Function

 Conclusion

merci à Renfield pour sa source PrevInstance qui m'a permis de comprendre le filemapping

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

27 juillet 2009 14:29:34 :
zip
27 juillet 2009 16:53:31 :
ortho dans description

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) [VB2008] OBSERVER L'ACTIVITÉ INPUT (CLAVIER SOURIS) DE L'UTI...
Source avec Zip Source avec une capture RÉCUPÉRATION DES IMAGES SYSTÈME DEPUIS LEUR EXTENSION OU LEU...
Source avec Zip Source avec une capture FILE FOLDER LOCKER - BLOQUER (ET DÉBLOQUER) L'ACCÈS À CERTAI...
Source avec Zip Source avec une capture FOLDER HELPER - DOSSIERS SPECIAUX, MANIPULATION DE DOSSIERS,...
Source avec Zip Source avec une capture TEXTBOX AUTOCOMPLETE - ZONE DE TEXTE PRÉREMPLISSABLE LORS DE...

 Sources de la même categorie

Source avec Zip Source avec une capture OPTIONS PENDANT LE DÉBOGAGE par avictatum
Source avec Zip Source avec une capture Source .NET (Dotnet) TROUVER UN CONTROLE "ACTIF" DANS UN FORM par didierdeco91
Source avec Zip Source avec une capture RESISTANCES ÉQUIVALENTES par besqueut
Source avec Zip Source avec une capture Source .NET (Dotnet) JACALENDAR par raffika
Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) VISUAL BACKUP, SOLUTION DE SAUVEGARDES AUTOMATISÉES par fifrelin70
Source .NET (Dotnet) LISTER LES NOMS DES INSTANCES SQL SERVER. par boutemine
Source avec Zip DÉTECTER UNE INSTANCE PRÉCÉDENTE DE MON APPLICATION par jack
Source avec Zip CRÉATION DE CONTRÔLES DYNAMIQUE par mimiZanzan
Source avec Zip Source .NET (Dotnet) OUVRIR DES DOCUMENTS DANS LA MÊME INSTANCE DE L'APPLICATION ... par ShareVB

Commentaires et avis

Commentaire de jack le 28/07/2009 11:42:39 administrateur CS 10/10

Excellent, Messire PCPT.
Voilà la méthode que j'aurai dû utiliser dans mon SysTray pour déterminer les constantes de Timer (instances multiples d'un UserControl) - Je la mettrais à jour ASAP.
C'est propre.
Merci.

Commentaire de jack le 28/07/2009 13:07:22 administrateur CS

Voilà, je n'ai pas résisté longtemps pour mettre en application : http://www.vbfrance.com//code.aspx?ID=50355
Merci PCPT
Cette solution est quand même plus 'pro'

Commentaire de jack le 28/07/2009 17:15:23 administrateur CS

Un petit détail qui a son importance :
La variable commune gérée ici perd sa valeur une fois que les objets qui lui faisait référence ont tous disparus.
En d'autre terme, cette variable ne vit que si au moins un objet y est rattaché.

Commentaire de PCPT le 28/07/2009 21:42:57 administrateur CS

merci pour ton comm et ta note Jack ;)
content que çà te plaise et te serve

pour ton "détail", c'est normal (le dernier objet décrémentant ferme le mapping, c'est le but :p). le "1" n'a pas besoin de savoir qu/s'il y en a eu d'autres avant lui, tant qu'il est bien unique. à moins que j'ai mal compris ta remarque

bon dev ;)

Commentaire de nicolasq150784 le 23/04/2010 14:20:49

Il est ou le .sln ?

Commentaire de jack le 23/04/2010 15:43:16 administrateur CS

@Nicolas : Il n'y a pas de .sln dans un projet VB6
Tu peux tenter d'ouvrir le .vbp sous .Net qui tentera de faire un upgrade

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Instance Excel [ par Zimoro ] Salut,Je travail avec Excel en utilisant COM.Je créer une instance Excel sous VB, mais c'ets lorsque que je quit, parfois l'instance Excel n'est pas f attribuer un identifiant aléatoire calculé avec des chiffre et des lettres [ par yobogs ] Bonjour,quelqu'un aurait il un script me permettant de calculer un identifiantaléatoire et verifier dans la base de donnée s'il n'existe pas.Je ne veu Erreur bizarre [ par Nanabel ] Voilà, quand j'exécute mon prog et quand j'ai un IE de lancer, ça marche nickel, mais si je lance le même prog et qu'aucune instance de IE n'est ouver Détection de l'instance [ par Patrice ] Je cherche à créer un bouton dans une autre application que la mienne avec la fonction api CreateWindowEx qui nécessite en paramètre une instance de l Instance: Tableau ou collection [ par Boula ] J'ai déclaré une instance d'une classe cPaiement dans uneclasse cPersonne. Ca fonctionne très bien mais j'ai besoind'un tableau de cette instance(cPai Récupérer l'identifiant du poste emeteur local... [ par thehitman ] Salut tout le monde,chuis debutant en VB, et g une demande pour recuperer l'identifiant du poste local. et j connais rien -;). merci d'avance a ceux e OCX et identifiant [ par vbtom ] Bonjour,Je suis en train de faire un OCX qui sera destiné a s'intégré dans une page web seulement pour l'intégrer je dois récupérer un identifiant qui application multilingue [ par vbusinor ] je suis en train de développer une application qui doit être multilangue.Quelle est la meilleure méthode?Je pense passer par un identifiant par objet Comment faire en sorte qu'il y ai qu'une seul instance de mon programme [ par DrPhil ] Bonjour,J'aimerai faire en sorte qu'il n'y ai qu'une seul instance de mon programme qui soi exécutée !Comment puis-je faire ? ouverture doc word dans l'instance de word existante. [ par Guinness ] bonjour.mon application ouvre un document, pour cela on créée un objet du type word document:Set AppWord = CreateObject("Word.Application")or, cet com


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales