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.NET Discussion :

VB.NET - Envoyer touche à un IHTMLElement


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut VB.NET - Envoyer touche à un IHTMLElement
    Bonjour, ma question est quelque peu pointue. J'espère quand même avoir une réponse. Je développe une application en VB.NET.

    Cette application remplie des champs dans une page web ouverte dans Internet Explorer. Pour remplir des TextArea traditionnel, pas de problème! Par contre, la page web en question contient aussi des combobox qui sont aussi remplie correctement, mais même une fois le texte inscrit dans le combobox, l’élément dans le combobox n'est pas sélectionné et quand j’appuie sur le bouton "Save", la page web considère le combobox vide étant donné qu'aucune sélection n'a été faites.

    Ce que je vois comme solution :
    • Mettre mon texte dans le combobox. OK
    • Mettre le combobox en focus avec IHTMLElement.focus(). OK
    • Envoyer la touche "Arrow down" pour mettre en surbrillance le seul champ correspondant au texte dans le combobox.
    • Envoyer la touche "Enter" pour sélectionner l'élément.


    Pour voir exactement de quel type de combobox je parle suivez ces étapes.
    Cliquer sur ce lien
    Cliquer sur "Open the console".
    Cliquer sur l'onglet vertical "Applications"
    Problem Management ---> New Problem
    Vous verrez les combobox en question ici (Assigned Group+, Assignee+)

    Merci beaucoup et même si vous n'avez pas la réponse, ne vous gêner pas pour les suggestions. Merci!

    Code que j'utilise pour remplir les champs :
    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
    Dim SWs As New SHDocVw.ShellWindows
        Dim IE As SHDocVw.InternetExplorer
     
        For Each IE In SWs
            If IE.Name = "Windows Internet Explorer" Or IE.Name = "Internet Explorer" Then
                If IE.LocationURL.Contains("onbmc") Then
     
                    Dim HTMLDoc As mshtml.HTMLDocument
                    HTMLDoc = IE.Document
     
                    Dim iHTMLCol As IHTMLElementCollection
                    Dim iHTMLEle As IHTMLElement
                    Dim strAttribute As String
     
                    iHTMLCol = HTMLDoc.getElementsByTagName("textarea")
     
                    For Each iHTMLEle In iHTMLCol
                        If Not iHTMLEle.getAttribute("id") Is Nothing Then
                            strAttribute = iHTMLEle.getAttribute("id").ToString
                            If strAttribute = "arid_WIN_3_1000000217" Then
                                iHTMLEle.setAttribute("value", "Help Desk Support")
                                iHTMLEle.focus()
     
                                Exit For
                            End If
                        End If
                    Next
                End If
            End If
        Next

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Plutôt que d'essayer de simuler la frappe d'une touche, pourquoi ne pas plutôt sélectionner directement l'élément voulu avec la propriété selectedIndex de l'interface IHTMLSelectElement ?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    En effet, je n'avais pas réaliser à quel point il y avait des interfaces "IHTML". Il y en a en tout genre. Par contre, les combobox dont je parle ne sont pas réellement des combobox comme on retrouve ailleurs.

    On a une case de texte "input" (c'est dans celle-ci que le texte va) et on a un bouton qui affiche un petit menu déroulent en javascript (autrement dit, le menu du combobox)

    Pour voir le genre de combobox, vous pouvez suivre les instructions dans la question originale.

    Merci!

    Cette image est exactement de quoi je parle.


  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, mais au final, tout ce que ça fait, c'est mettre un nom dans le champ texte... donc qu'est-ce qui t'empêche d'affecter directement la value du champ texte ?

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    Oui mettre le texte directement dans le champ fonctionne. Par contre quand j'appuie sur le bouton "Save", c'est comme si le champ était vide. Le texte est bien là mais l'élément n'a pas été sélectionné.

    Si cette sélection par un clique ou encore avec la touche Enter n'est pas faites, les champs sont considérés vides.

Discussions similaires

  1. [VB.NET] Bloquer touches Windows
    Par seemax dans le forum Windows Forms
    Réponses: 13
    Dernier message: 04/10/2007, 09h19
  2. [vb.net] envoyer recevoir mails
    Par progia dans le forum VB.NET
    Réponses: 5
    Dernier message: 03/12/2006, 11h13
  3. [VB.NET] Envoyer TreeNodes dans une socket
    Par Aspic dans le forum VB.NET
    Réponses: 10
    Dernier message: 18/02/2006, 16h29
  4. [.NET][C#] Touche clavier
    Par fab2050 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/11/2005, 12h52
  5. [VB.NET] Envoyer des e-mails !
    Par Ludog35 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 26/10/2005, 16h50

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