Rechercher sur internet le contenu textuel du control ayant le focus dans votre form

Description

Titre bizarre ? J'ai pas trouvé mieux...
Heu... ce code source permet de lancer une recherche sur Internet (sur Google, Altavista, Windows Live Search ou bien un moteur défini par l'utilisateur) concernant le contenu textuel d'un contrôle.

Exemple : vous sélectionnez un contrôle Textbox, vous lancez la recherche (touche F1), et vous trouvez les résultats de Text1.Text sur un moteur de recherche.
Pleins de contrôles différents sont placés dans la form, chacun d'entre eux affichant un texte. Sélectionnez le contrôle, et appuyez sur F1 pour la recherche...

Les divers moteurs sont sélectionnables par le menu.

Si vous entrez vous même un moteur de recherche (une URL), mettez "[TEXT]" dans l'URL à l'emplacement requis pour la recherche (exemple pour google.fr : http://www.google.fr/search?hl=fr&q=%22[TEXT]%22&meta=).

Concernant l'utilité de ce code.....

.... elle est pas évidente (du tout...damn...) sortie du contexte de mon programme (cette source est un infime morceau d'un très gros projet).
Qui a dit "çà sert à qu'dalle !" ? ;)

Mais vous pouvez peut être adapter le code pour qu'il ne soit pas (moins) inutile. EXEMPLE : vous remplacez toutes les lignes

If TypeOf Me.ActiveControl Is TextBox Then
sText = Me.ActiveControl.Text
ElseIf TypeOf Me.ActiveControl Is ListView Then
sText = Me.ActiveControl.SelectedItem.Text
ElseIf TypeOf Me.ActiveControl Is TreeView Then
sText = Me.ActiveControl.SelectedItem.Text
ElseIf TypeOf Me.ActiveControl Is CommandButton Then
sText = Me.ActiveControl.Caption
ElseIf TypeOf Me.ActiveControl Is CheckBox Then
.....

par sText = Me.ActiveControl.Name

pour lancer un recherche sur le NOM du contrôle, le moteur étant défini comme "personnalisé" et ayant comme URL votre site. Une "aide en ligne" pour chaque contrôle sera ainsi disponible. Par exemple, http://www.monsite/aide_en_ligne/controle=[TEXT].

Source / Exemple :


Option Explicit

'FORM de test pour ce programme
'PERMET de rechercher le texte contenu dans le contrôle sélectionné
'sur différents moteur du Web

'//APIs
'API permettant de lancer le navigateur par défaut
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'//VARIABLES
Private sURLrecherche As String    'contient l'URL du moteur perso
Private engineSearchEngine As SearchEngine 'contient le navigateur sélectionné

'//ENUMs
'contient les différents moteur possibles
Private Enum SearchEngine
    Google = 1
    Altavista = 2
    Live = 3
    Personnel = 4
End Enum

     
Private Sub Form_Load()
'définit les variables par défaut
Dim x As Long

    'par défaut, le moteur perso est google.fr
    sURLrecherche = "http://www.google.fr/search?hl=fr&q=%22[PROCESS]%22&btnG=Recherche+Google&meta="
    
    'par défaut, le moteur de recherche est google.com
    engineSearchEngine = Google
    
    'ajout des élements du ListView
    With ListView1.ListItems
        For x = 1 To 30
            .Add Text:="Element" & CStr(x) & " Listview"
        Next x
    End With
    
    'ajout des éléments du Treeview
    With TreeView1
        .Nodes.Add , tvwChild, "Root", "Tree1"
        .Nodes.Add , tvwChild, "Root2", "Tree2"
        .Nodes.Add "Root2", tvwChild, "n1", "Tree3"
        .Nodes.Add "Root2", tvwChild, "n2", "Tree4"
        .Nodes.Add "n2", tvwChild, "n21", "Tree5"
        .Nodes.Add "n2", tvwChild, "n22", "Tree6"
        .Nodes.Add "n22", tvwChild, "n221", "Tree7"
        .Nodes.Add "n221", tvwChild, "n2211", "Tree8"
        .Nodes.Add "n22", tvwChild, "n222", "Tree9"
        .Nodes.Add "n2", tvwChild, "n31", "Tree10"
        .Nodes.Add "Root2", tvwChild, "n3", "Tree11"
    End With
    'expand les éléments du treeview
    For x = 1 To 11
        TreeView1.Nodes(x).Expanded = True
    Next x

End Sub

Private Sub mnu_altavista_Click()
'change les checkboxes
    Me.mnu_google.Checked = False
    Me.mnu_altavista.Checked = True
    Me.mnu_define.Checked = False
    Me.mnu_live.Checked = False
    
    engineSearchEngine = Altavista
End Sub

Private Sub mnu_define_Click()
Dim s As String

    'change les checkboxes
    Me.mnu_google.Checked = False
    Me.mnu_altavista.Checked = False
    Me.mnu_define.Checked = True
    Me.mnu_live.Checked = False
    
    'définit le moteur de recherche
    s = "Définissez l'URL par défaut de votre moteur personnalisé" & _
    vbNewLine & "Mettez [TEXT] à la place de la zone de la string" & _
    vbNewLine & "réservée au mot à rechercher" & _
    vbNewLine & "Exemple : http://www.google.fr/search=%22[TEXT]%22"
    
    sURLrecherche = InputBox(s, "Définir un site de recherche personnalisé")
    
    engineSearchEngine = Personnel
End Sub

Private Sub mnu_end_Click()
    Unload Me
    End
End Sub

Private Sub mnu_go_for_search_Click()

'lance la recherche

Dim sURL As String  'contient l'URL finale de recherche
Dim sText As String 'texte à rechercher

    'recherche de l'item sélectionné
    'récupère son texte en fonction de la nature du contrôle
    
    If TypeOf Me.ActiveControl Is TextBox Then
        sText = Me.ActiveControl.Text
    ElseIf TypeOf Me.ActiveControl Is ListView Then
        sText = Me.ActiveControl.SelectedItem.Text
    ElseIf TypeOf Me.ActiveControl Is TreeView Then
        sText = Me.ActiveControl.SelectedItem.Text
    ElseIf TypeOf Me.ActiveControl Is CommandButton Then
        sText = Me.ActiveControl.Caption
    ElseIf TypeOf Me.ActiveControl Is CheckBox Then
        sText = Me.ActiveControl.Caption
    ElseIf TypeOf Me.ActiveControl Is OptionButton Then
        sText = Me.ActiveControl.Caption
    ElseIf TypeOf Me.ActiveControl Is ComboBox Then
        sText = Me.ActiveControl.Text
    ElseIf TypeOf Me.ActiveControl Is DriveListBox Then
        sText = Me.ActiveControl.Drive
    ElseIf TypeOf Me.ActiveControl Is ListBox Then
        sText = Me.ActiveControl.Text
    ElseIf TypeOf Me.ActiveControl Is DirListBox Then
        sText = Me.ActiveControl.Path
    ElseIf TypeOf Me.ActiveControl Is FileListBox Then
        sText = Me.ActiveControl.FileName
    ElseIf TypeOf Me.ActiveControl Is TabStrip Then
        sText = Me.ActiveControl.SelectedItem.Caption
    End If

    
    If engineSearchEngine = Personnel Then
    
        'alors c'est un navigateur perso
        sURL = Replace(sURLrecherche, "[TEXT]", sText)
        
    Else
    
        'un des navigateurs prédéfinis
        Select Case engineSearchEngine
            Case Google
                'google.com
                sURL = "http://www.google.com/search?hl=en&q=%22" & sText & "%22"
            Case Altavista
                'altavista.com
                sURL = "http://www.altavista.com/web/results?itag=ody&q=%22" & sText & "%22&kgs=0&kls=0"
            Case Live
                'live.com
                sURL = "http://beta.search.live.com/results.aspx?q=%22" & sText & "%22&mkt=fr-fr&FORM=LVSP&go.x=0&go.y=0"
        End Select
        
    End If
    
    'lance le navigateur internet par défaut
    ShellExecute Me.hwnd, "open", sURL, ByVal 0&, 0&, 1
    
End Sub

Private Sub mnu_google_Click()
'change les checkboxes
    Me.mnu_google.Checked = True
    Me.mnu_altavista.Checked = False
    Me.mnu_define.Checked = False
    Me.mnu_live.Checked = False
    
    engineSearchEngine = Google
End Sub

Private Sub mnu_live_Click()
'change les checkboxes
    Me.mnu_google.Checked = False
    Me.mnu_altavista.Checked = False
    Me.mnu_define.Checked = False
    Me.mnu_live.Checked = True
    
    engineSearchEngine = Live
End Sub

Conclusion :


Bon OK, çà casse - à priori - pas la baraque niveau utilité de code. M'enfin, sachez que l'idée de modification donnée dans la présentation du code peut être intéressante... et sachez également que c'est intéressant dans mon projet (si, si !)

Pour les commentaires, tous sont bienvenus (évidemment les critiques aussi, mais argumentées svp).
Pour la note, inutile de mettre 0 si vous comprenez pas à quoi sert ce code... passez simplement votre chemin ;)

Merci de votre compréhension, @+

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.