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 :

Null terminated string [Sources]


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 61
    Par défaut Null terminated string
    Bonjour, je crois que c'est la question la plus con que j'ai jamais pose sur ce forum :
    comment fait on pour avoir une chaine terminee par un caractere null ?
    a part faire : chaine = chaine1 & vbNullchar

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Pour quelle finalité ?

    Null représente une absence d'info, donc je ne comprends pas :
    - pourquoi tu devrais concaténer une chaîne à un "Null"
    - comment tu pourrais le faire techniquement
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Que dire de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = chaine1 & Null

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 61
    Par défaut
    bah c'est comme en C/C++ koi : les chaines se terminent par un caractere null de fin de chaine, en l'occurence le '\0'
    la finalite :
    jutilise l'API Win32 > fonction SendMessage(hWnd,WM_SETTEXT,0,ByVal chaine)

    et ca ne marche pas... la fonction me retourne 0, et d'apres mon ami MSDN, cela signifie qu'il n'y a pas assez de place dans l'edit (represente par le handle hwnd) pour placer ma chaine...
    il est specifie que le dernier argument de cette fonction est : null-terminated string...

    alors je pense que le PB vient de la, voila

  5. #5
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut Re: Null terminated string
    Citation Envoyé par VoLc0m
    a part faire : chaine = chaine1 & vbNullchar
    Cette méthode ne te convient pas :
    Si tu préfères...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = chaine1 & Chr(0)

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 61
    Par défaut
    bah justement j'ai essaye avec cette methode... ptet ke le pb vient pas de la, si c'est le cas... >

  7. #7
    Tan
    Tan est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = chaine1 & vbCrLf
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = chaine1 & vbCr
    Si ça ne marche pas, dis nous ce qui ne vas pas, car je pense que dans ce cas, c'est que l'on a mal saisi le problème.

  8. #8
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 61
    Par défaut
    ue ca marche pas
    Bon je vais expliker le pb en detail alors ^^

    J'utilise l'API Win32 en VB pour lancer IE avec CreateProcess(), qui me renvoi ainsi le handle de mon process IE.
    Ensuite je descends dans la hierarchie des elements IE jusqu'au Edit (endroit ou l'on saisit l'URL). J'obtiens son Handle, et j'ai verifie que ceci est le bon handle... donc jusque la no problem.

    Le pb en lui meme :
    je souhaite changer l'URL dans l'EDIT d'IE en envoyant le message WM_SETTEXT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lSuccess = SendMessage(hWnd, WM_SETTEXT, 0, ByVal buffer)
    ce code est donc cense me modifier la valeur de la barre d'addresse dans IE... et ca marche pas...
    le sendmessage me retourne 0 dans LSuccess, ce qui signifie dapres la doc sur MSDN, qu'il n'y a pas assez de place dans l'EDIT pour ecrire ma chaine (buffer). De plus l'argument buffer ici doit etre une chaine terminee par un caractere null.
    A precise que j'ai declare : dim buffer as string
    buffer = "http://www.google.fr"

    J'espere avoir ete clair

    C'est le 3eme jour que je suis sur ce probleme... javance pu lol

  9. #9
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buffer = "http://www.google.fr" & Chr(0)
    Et comment est déclaré SendMessage :

  10. #10
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 61
    Par défaut
    Bon... jvais etre vulgaire, mais tanpis :
    je suis un gros con :
    j ai mis ma constante WM_SETTEXT en : PRIVATE dans un autre module !!!!!
    normal que ca marchai pas!!!!


  11. #11
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut
    Est-ce que tu pourrais nous donner ton code, il me semble bien intéressant... ou au moins nous donner un petit exemple de manipulation des composants d'une autre fenêtre...

  12. #12
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 61
    Par défaut
    pa de prob : c'est plus du Windows Developpement ... me bannissez pa du forum !!!
    alors ce code permet de lancer une instance d'IE et de changer l'url, pour le faire naviguer en quelque sorte, en utilisant l'API win32 uniquement :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    'API to manage Process
        Public Type PROCESS_INFORMATION
            hProcess As Long
            hThread As Long
            dwProcessId As Long
            dwThreadId As Long
        End Type
     
        Public Type STARTUPINFO
            cb As Long
            lpReserved As String
            lpDesktop As String
            lpTitle As String
            dwX As Long
            dwY As Long
            dwXSize As Long
            dwYSize As Long
            dwXCountChars As Long
            dwYCountChars As Long
            dwFillAttribute As Long
            dwFlags As Long
            wShowWindow As Integer
            cbReserved2 As Integer
            lpReserved2 As Long
            hStdInput As Long
            hStdOutput As Long
            hStdError As Long
        End Type
     
        Public Const NORMAL_PRIORITY_CLASS = &H20&
        Public Const INFINITE = -1&
        Public Const WM_GETTEXT = &HD
        Public Const WM_GETTEXTLENGTH = &HE
        Public Const WM_SETTEXT = &HC
        Public Const WM_KEYDOWN = &H100
        Public Const VK_RETURN = &HD
     
     
        Public Declare Function CreateProcess Lib "kernel32" _
            Alias "CreateProcessA" _
            (ByVal lpApplicationName As String, _
            ByVal lpCommandLine As String, _
            lpProcessAttributes As Any, _
            lpThreadAttributes As Any, _
            ByVal bInheritHandles As Long, _
            ByVal dwCreationFlags As Long, _
            lpEnvironment As Any, _
            ByVal lpCurrentDriectory As String, _
            lpStartupInfo As STARTUPINFO, _
            lpProcessInformation As PROCESS_INFORMATION) As Long
     
        Public Declare Function FindWindow Lib "user32" _
            Alias "FindWindowA" (ByVal lpClassName As String, _
            ByVal lpWindowName As String) As Long
     
        Public Declare Function SendMessage Lib "user32" _
            Alias "SendMessageA" (ByVal hWnd As Long, _
            ByVal wMsg As Long, ByVal wParam As Long, _
            lParam As Any) As Long
     
        Public Declare Function FindWindowEx Lib "user32" _
            Alias "FindWindowExA" (ByVal hWnd1 As Long, _
            ByVal hWnd2 As Long, ByVal lpsz1 As String, _
            ByVal lpsz2 As String) As Long
     
     
        'create a new IE process
        sInfo.cb = Len(sInfo)
        lSuccess = CreateProcess(sNull, _
                                     HandleRoot(GV.IE4PathNT, "iexplore.exe"), _
                                     ByVal 0&, _
                                     ByVal 0&, _
                                     1&, _
                                     NORMAL_PRIORITY_CLASS, _
                                     ByVal 0&, _
                                     sNull, _
                                     sInfo, _
                                     pInfo)
        Wait (5)
        hWnd = FindWindow("IEFrame", vbNullString)
     
        hWnd = FindWindowEx(hWnd, 0, "WorkerW", vbNullString)   'get the handle of the Edit (URL on IE)
        hWnd = FindWindowEx(hWnd, 0, "ReBarWindow32", vbNullString)
        hWnd = FindWindowEx(hWnd, 0, "ComboBoxEx32", vbNullString)
        hWnd = FindWindowEx(hWnd, 0, "ComboBox", vbNullString)
        hWnd = FindWindowEx(hWnd, 0, "Edit", vbNullString)
     
        'move to another page
        lSuccess = SendMessage(hWnd, WM_SETTEXT, 0, ByVal "http://www.google.fr")
        lSuccess = SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0)
    le seul truc pas cool pour le moment, c'est le fait que je prends un peu au hasard... la fenetre IE (findwindow()) il serait plus propre de trouver le handle du thread en fonction du handle du process, mais j'y travaille

    Enjoy!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérification 'Null terminated strings'
    Par Ardely dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2013, 14h03
  2. null terminated char recu en paramentre illisible..
    Par neismarspra dans le forum C++
    Réponses: 2
    Dernier message: 06/07/2011, 22h27
  3. Adresse d'une chaine null terminated
    Par zitoune92 dans le forum Delphi
    Réponses: 3
    Dernier message: 02/04/2007, 09h18
  4. convertir un type null en string (re)
    Par pierrot67 dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/01/2007, 19h27
  5. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25

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