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

Soyez le premier à donner votre avis sur cette source.

Vue 7 279 fois - Téléchargée 399 fois

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

Ajouter un commentaire

Commentaires

lokovbf
Messages postés
11
Date d'inscription
jeudi 1 septembre 2005
Statut
Membre
Dernière intervention
1 avril 2011
-
" Je l'enleverais bien, mais c'est pas possible. "
ok autant pour moi, faudrai alors demander auu web master de pouvoir le faire. ou tu peux pas non modifier le titre "code pour demontrer l'utilisation de ShellExecute". comme ca on cherche pas plus loin...


"GetCursorPos puis WindowFromPoint puis GetWindowText" : non ca ne marche pas avec internet explorer d'ou la fausse joie. (ca y'est qqun a trouvé le moyen de faire ca)

desolé du ton, et à nouveau merci pr tes autres codes (1)

(1) je te l'ai dit moi-meme: "et en plus, t'as des prog bcp plus interessants et vachements sympas"
"Bref, que dire si ce n'est que cette source provient du temps où je ne savais pas coder" j'aurai du regarder la date et le niveau... mais pas le tps. j'avais lu vite fait "RECHERCHER SUR INTERNET LE CONTENU TEXTUEL DU CONTROL AYANT LE FOCUS" et qd tu cherche tout azimut, tu lis mal.
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Salut,

cette source est en effet vraiment très très nulle, et la seule raison pour laquelle elle existe encore c'est qu'on ne puisse pas la supprimer.

En général je balance des codes a peu près inédits
http://www.vbfrance.com/codes/FASTCOLLECTION-COLLECTION-10000-FOIS-PLUS-RAPIDE-LECTURE-INDEX_42861.aspx
http://www.vbfrance.com/codes/RECUPERER-VARIABLES-ENVIRONNEMENT-IMPORTE-QUEL-PROCESSUS_49264.aspx

ou bien des trucs bien aboutis
http://www.vbfrance.com/codes/YET-ANOTHER-PROCESS-MONITOR_48860.aspx

pas des codes tous pourris, qui, comme tu dis, se résument à l'appel à une fonction de l'API Windows.

Bref, que dire si ce n'est que cette source provient du temps où je ne savais pas coder ? Je l'enleverais bien, mais c'est pas possible.


Par contre une remarque : je sais pas pourquoi t'es tombé sur cette source vu ce que tu cherches à faire...
Tu veux faire quoi précisément ? Si j'ai bien compris, c'est récupérer le handle d'un contrôle et récupérer le mdp ? (si c'est une textbox)
Si c'est çà : GetCursorPos puis WindowFromPoint puis GetWindowText.

@+
lokovbf
Messages postés
11
Date d'inscription
jeudi 1 septembre 2005
Statut
Membre
Dernière intervention
1 avril 2011
-
remarque juste pour le principe:
"Concernant l'utilité de ce code......... elle est pas évidente"
en effet, moi qui croyait que qqun avait enfin trouvé le moyen d'identifier un controle par son handle (hwnd) ds le navigateur pour y envoyer (ou recuperer) un mot de passe, etc... (fausse joie)

desolé violent_ken mais ton code servait pas à gd chose:
t'aurai juste du dire: voila le moyen de lancer une recherche sur internet avec ShellExecute. et basta
si je devais balancer sur vbfrance aussi tous les petits progs que j'avais fait ds ma carrière, le site serait innondé.
c'est ca la magie d'internet: on y trouve des trucs geniaux , comme aussi n'importe quoi.

enfin, j'aurais du m'en douter, mais j'ai cliqué sans regarder : niveau debutant - année 2006
et il faut bien debuter par ce genre de petits programmes (mais de grace gardez le pr vous, et une fois que vs avez vraiment un prog interessant et abouti, alors ok on le diffuse)

et en plus, t'as des prog bcp plus interessants et vachements sympas: COMMENT CONTRÔLER TOTALEMENT LES PROCESSUS D'UN PC DISTANT,
COMMENT FAIRE UN MONITORING DU REGISTRE (EXEMPLE : MONITORER...

alors les gars , faites le menage de tps en tps, virez vos vieux codes inutiles. sinon dans 10 ans, vbfrance contiendra 3 milliards de progr en tout genres et ont mettra des heures à y trouver ce qu'on cherche.

enfin merci qd meme pr tes progs et bonne continuation...
VBsnail
Messages postés
13
Date d'inscription
mercredi 22 février 2006
Statut
Membre
Dernière intervention
19 mars 2008
-
Pour ton information, j'ai écrit un bout de code en VB6 pour normaliser les URL.
Lesz accents, les cédilles, les Euros, tout cela passe, même le chinois.
http://www.vbfrance.com/codes/ENCODER-URL-UTF8-DEPUIS-WORD_46108.aspx
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Salut, alors oui c'est du VB6 ^^

Sinon, la recherche marche pour google avec des caractères accentués, mais échoue sur altavista et live search (la lettre accentuée est omise).

On pourrait en effet ajouter une fonction qui formate correctement le texte à rechercher, en se limitant par exemple aux chiffres et lettres de a à z.
@+

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.