IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Le programme EXE se plante alors qu'il fonctionne dans l'environnement VB6


Sujet :

VB 6 et antérieur

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut Le programme EXE se plante alors qu'il fonctionne dans l'environnement VB6
    Bonjour,

    Je développe des routines pour accéder au registre de Windows (Lecture/Ecriture des données, Création/Suppression des clefs, Enumération des clefs et des noms des data etc) . Et si ça marche bien dans l'environnement VB6, le programme compilé en EXE se plante uniquement dans l’accès à la fonction RegEnumValue pour lister le nom des datas qui sont dans une clef et qui me retourne une erreur 87 qui correspond à "87(&H57): Paramètre incorrect".
    J'ai tenté les compilations "optimiser la rapidité du code", "optimiser la taille du code", "pas d'optimisation" pas de changement
    Je suis en VB6 Entreprise et W10 32bits
    Voici mon code (partiel):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
    ..........
    Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hkey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long 
    ...........
     
    Public Function EnumerationValue(Root&, CheminFind$, Mode As Boolean) As String
        Dim valuename As String     ' name of the value being retrieved
        Dim valuelen As Long        ' length of valuename
        Dim datatype As Long        ' receives data type of value
        Dim data(0 To 254) As Byte  ' 255-byte data buffer for read information
        Dim datalen As Long         ' size of data buffer information
        Dim datastring As String    ' will receive data converted to a string, if necessary
        Dim hkey As Long            ' handle to the registry key to enumerate the values of
        Dim Index As Long           ' counter for the index of the value to enumerate
        Dim c As Long               ' counter variable
        Dim retval As Long          ' functions' return value
        Dim CadrageNom%
        Dim CadrageVal%
        Dim ListeClef$
        ListeClef$ = ""
        ' Open the registry key to enumerate the values of.
        retval = RegOpenKeyEx(Root&, CheminFind$, 0&, KEY_QUERY_VALUE, hkey)
        ' Check to see if an error occured.
        If retval <> 0 Then
    '        Debug.Print "Registry key could not be opened -- aborting."
            EnumerationValue = "? (Listage nom) Il est impossible d'ouvrir la clef !"
            Exit Function ' abort
        End If
     
        ' Begin enumerating the values.  Get each one, displaying its name.  If it's a null-
        ' terminated string or binary data, display it.  If not, say so.
        Index = 0  ' initialize the counter
        While retval = 0  ' loop while successful
            ' Initialize the value name buffer.
            valuename = Space(255)  ' 255-space buffer
            valuelen = 255  ' length of the string
            datalen = 255  ' size of data buffer
            ' Get the next value to be enumerated
    RegistreRW!Espion.AddItem "hkey =" & Format$(hkey)
    RegistreRW!Espion.AddItem "Index =" & Format$(Index)
    RegistreRW!Espion.AddItem "valuename =" & valuename
    RegistreRW!Espion.AddItem "valuelen =" & Format$(valuelen)
    RegistreRW!Espion.AddItem "datatype =" & Format$(datatype)
    RegistreRW!Espion.AddItem "data(0) =" & Format$(data(0))
    RegistreRW!Espion.AddItem "datalen =" & Format$(datalen)
            retval = RegEnumValue(ByVal hkey, ByVal Index, ByVal valuename, valuelen, &H0, datatype, data(0), datalen)
    RegistreRW!Espion.AddItem "RegEnumValue =" & Format$(retval)
            If retval = 0 Then   ' if successful, display information
    Pour analyser le problème, j'ai ajouté un objet Espion qui est une ListBox (voir les différences d'espionnage en PJ entre les deux exécutions en EXE et en VB6)

    Si quelqu'un a une idée sur la cause de ce problème ou peut me donner des pistes d'investigation ? Perso, ma boule de cristal ne répond plus !

    Merci d'avance
    Daudet
    Images attachées Images attachées   

Discussions similaires

  1. Appel d'un programme *.exe
    Par kroma23 dans le forum Débuter
    Réponses: 5
    Dernier message: 25/10/2007, 18h49
  2. Prendre un algorithme depuis un programme .exe
    Par ..::snake::.. dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 21/05/2007, 17h07
  3. executer un programme *.exe
    Par CLion dans le forum MFC
    Réponses: 5
    Dernier message: 10/11/2006, 00h20
  4. Réponses: 2
    Dernier message: 30/01/2006, 22h19
  5. .exe qui plante sur d'autres PC ????????
    Par OutOfRange dans le forum Langage
    Réponses: 1
    Dernier message: 02/11/2005, 22h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo