[..] Acces aux classes et a leurs methodes dans une DLL

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
xavierha
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 21 sept. 2011 23:08
Localisation : Atlanta, GA
Status : Hors ligne

[..] Acces aux classes et a leurs methodes dans une DLL

#1

Message par xavierha »

Bonjour,

j'ai lu le tutoriel http://www.autoitscript.com/forum/index ... h_id=25713, il explique comment appeler les fonctions et se servir de structures a l'interieur d'une DLL. Malheureusement, il n'y a pas de mention de classes dans une DLL.

Est ce que quelqu'un a reussi a acceder aux fonctions et proprietes a l'interieur de classes dans une dll?

J'essaie de communiquer avec Visual Source Safe pour verifier automatiquement la version actuelle de certains fichiers, et les extraire de Visual Source Safe s'ils sont plus recents que ceux que j'ai sur mon disque dur.
La DLL s'appelle SSAPI.DLL. Elle contient plusieurs classes, entre autres, VSSDatabase et VSSItem.
VSSDatabase contient la fonction Open, qui me permet de donner un nom d'utilisateur et un mot de passe.
VSSItem me donne acces aux donnees sur les fichiers contenus dans Visual Source Safe.
J'ai pu faire ca avec VB6, et ca marchait tres bien.
le code en vb6:

Code : Tout sélectionner

Dim vsdb As New VSSDatabase
Dim vsItem As VSSItem
Dim vsElement As VSSItem
vsdb.Open "\srcsafe.ini", "Nom", "MotDePasse"
vsdb.CurrentProject = "MonProjet" ' indiquer le nom du projet
vsItem = vsdb.VSSItem("MonProjet", False)
for each vsElement in vsItem.Items(False)
 ...
next
Merci,

Xavier
xavierha
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 21 sept. 2011 23:08
Localisation : Atlanta, GA
Status : Hors ligne

Re: [..] Acces aux classes et a leurs methodes dans une DLL

#2

Message par xavierha »

j'ai finalement trouve une solution.
Pour VB6, la classe est SourceSafeLib.VSSDatabase.
Pour vbscript ou AutoIT, il faut appeler la classe "SourceSafe". Je m'attendais a ce que la commande
Dim $VSSDB = ObjCreate ( "SourceSafeLib.VSSDatabase" )
retourne un objet valide. Mais pour vbscript etc, Microsoft a eu l'idee inattendue de changer le nom de la classe a "SourceSafe" :? .
Code:

Code : Tout sélectionner

Dim $VSSDB = ObjCreate ( "SourceSafe" )
$VSSDB.Open ( "C:\Program Files (x86)\Microsoft Visual Studio\VSS\Project\srcsafe.ini", "pierrot", "motDePasse" )
Dim $VSSElem = $VSSDB.VSSItem("$/Logiciel/Automatisation/Projet", False)
Dim $Buf
for $Item in $VSSElem.Items
  $Buf &= $VSSElem.name
Next
MsgBox(0,"","items: " & $Buf)
 
Il y a 1 caveat:
VBS ou AutoIT etc ne marche que si la database vss est locale. VSS va chercher l'utilisateur localement. Il y a un repertoire qui s'appelle par exemple Pierrot:
C:\Program Files (x86)\Microsoft Visual Studio\VSS\users\pierrot
Si ce repertoire n'est pas trouve, $VSSDB.Open va echouer.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Acces aux classes et a leurs methodes dans une DLL

#3

Message par blacksoul305 »

Tu as eu le bon réflexe de poster ta réponse, cependant n'oublie pas la balise [R] en éditant le titre de ton premier message !
Étudiant en 2ème année de Licence Informatique.
Répondre