Page 1 sur 1

[R] Récupérer le contenu d'une ListBox

Posté : lun. 26 avr. 2010 21:37
par deuzef68
J'essaye d'automatiser l'outil odbc32.exe

Pour créer une nouvelle source de donnée système
on va dans le 2ème onglet...puis Ajouter
à ce moment là j'essaye de récupérer le liste des pilotes odbc
mais je dois m'y prendre mal car je n'obtient pas cette liste

avec l'outil windows info on obtient les infos suivantes

Title:Créer une nouvelle source de données
Advanced Mode [CLASS:SysListView32; INSTANCE:1]

j'ai écris comme partie de code

Code : Tout sélectionner

$handle = ControlGetHandle("Créer une nouvelle source de données", "", "SysListView321")
$chaine = _GUICtrlListBox_GetText($handle, 4)
MsgBox(64, "Retour", $chaine)
 
Retour vide !!!

Je ne vois pas l'erreur

Fred

Re: [..] Récupérer le contenu d'une ListBox

Posté : mar. 27 avr. 2010 22:19
par SanZos
Bonsoir/Bonjour,

Tout d'abord je ne connais pas l'outil odbc32.exe.

D'après ce que j'ai pu lire de ton message je pense que tu doit avoir une erreur au niveau de ton _GUICtrlListBox_GetText.
En effet je voit que ta classe est : SysListView32, on peut donc supposer que la commande sera plutôt : _GUICtrlListView_GetItemText. Voila ce que ca pourrai donner. J'ai aussi rajouter une vérification au niveau du handler. A tester.

Code : Tout sélectionner

#Include <GuiListBox.au3>

; Création du handler
$handle = ControlGetHandle("Créer une nouvelle source de données", "", "SysListView321")

; Si la récupération a ete reussie
if ($handle <> "") Then
    ; Boucle pour recuprer tout les textes de la liste séparér par des retour a la ligne
    For $i = 1 to 10
        $chaine = $chaine & _GUICtrlListView_GetItemText($handle, $i) & @CRLF
    Next
    ; Affichage
    MsgBox(64, "Retour", $chaine)
Else ; Sinon affichage d'une erreur
    MsgBox(64, "Retour", "Erreur dans la récupération du handler")
EndIf
San Zos.

Re: [..] Récupérer le contenu d'une ListBox

Posté : ven. 30 avr. 2010 16:52
par deuzef68
J'ai trouvé et ça fonctionne bien

Code : Tout sélectionner

    ; On récupère le nombre de sources
    $hListView = ControlGetHandle ($sODBCAD32_Panel2,"","[CLASS:SysListView32; INSTANCE:1]")
    $iNbreLines = _GUICtrlListView_GetItemCount($hListView)
 
    ; on vérifie que le driver existe
    $bDiverODBC = False
    $iDriverNumber = -1

    if $iNbreLines <> 0 Then
       for $i = 0 to $iNbreLines -1
            $aItem = _GUICtrlListView_GetItem($hListView, $i)

            if $aItem[3] = $sDriverNameODBC then
               $bDiverODBC = True
               $iDriverNumber = $i
            EndIf
        next
    EndIf
 
Merci encore

Fred