Variable de surbrillance bleu

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
EkinOx
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 06 nov. 2018 15:28
Status : Hors ligne

Variable de surbrillance bleu

#1

Message par EkinOx »

Bonjour à tous,

J'ai fais pas mal de recherches sur le sujet mais impossible de trouver un solution...
Existe-il un moyen de savoir en temps réel si un mot ou un texte entier est sélectionné (surbrillance bleue).
Mais surtout de créer une variable (dont la valeur changera à chaque nouvelle sélection) contenant les caractères sélectionnés.

Je ne parle pas d'un input ou d'un control dans une GUI mais bien de n'importe quel mot/texte sélectionné sur n'importe quelle page !

Exemple :
exemple.png
$variabledemesreves = Rubri

Merci d'avance si quelqu'un a une idée.
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: Variable de surbrillance bleu

#2

Message par mdanielm »

Bonsoir,
Peut-être:
-Envoyer Ctrl-C à la fenêtre
-Récupérer le presse-papier dans une variable
Trop simple?
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Variable de surbrillance bleu

#3

Message par orax »

Si c'est dans une fenêtre d'Internet Explorer, on peut faire comme dans l'exemple suivant.

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IE_Example()
Sleep(5000) ; pause de 5 secondes pour sélectionner du texte dans la page
$sel = $oIE.document.getSelection().toString() ; récupère la sélection
ConsoleWrite($sel & @CRLF)
_IEQuit($oIE)
https://developer.mozilla.org/fr/docs/W ... tSelection
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Variable de surbrillance bleu

#4

Message par mikell »

Franchement, AMHA la solution de mdanielm est nickel. Simple, efficace, polyvalente
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
EkinOx
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 06 nov. 2018 15:28
Status : Hors ligne

Re: Variable de surbrillance bleu

#5

Message par EkinOx »

Merci pour vos réponses et vos conseils.
Effectivement j'ai pensé à cette technique et c'est même celle que j'ai mis en place !

Voici mon script pour mieux comprendre :
► Afficher le texte
Maintenant c'est pas forcement le plus pratique et le plus rapide...
La méthode sur IE fonctionne certainement mais j'ai besoin que ça fonctionne partout...
Après j'ai pensé utiliser "PixelSearch" car le bleu de la surbrillance est particulier mais ça promet un script hard et incertain ^^".
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Variable de surbrillance bleu

#6

Message par walkson »

Bonjour,
Il est vraiment bizarre votre code :shock:
HotKeySet( "{F2}", Actionprogramme) et Global $TexteOk n'ont pas besoin d'être dans une boucle mais être en début de code
$TexteOk = StringUpper(ClipGet()) c'est bien pour récupérer le clipboard mais avant il faut le remplir
Send("{DEL}") autrement dit, supprimer tout ce qui sera sélectionné. Vous allez faire de la place sur votre PC :P
Send($TexteOk) c'est envoyé des mots sans destinataire :mrgreen:

Comme le suggérait Daniel, il faut faire un copier (ctrl+c) Send("^c") après on utilise ClipGet()
Pour vider le clipboard (je pense que c'était ce que vous souhaitiez avec DEL) ClipPut("")
à titre d'exemple
#include <WindowsConstants.au3>
#include <Misc.au3>

While 1

If _IsPressed(01) Then ;clic gauche pressé
   Sleep(500)
Send("^c")
ToolTip(ClipGet() , 50,100)
;ou GUICtrlSetData($Input, ClipGet())
Else
   ClipPut("")
   Sleep(250)
EndIf

WEnd
Quant à utiliser PixelSearch avec le million de pixels et quelques de votre écran et que vous avez trouvé votre couleur, reste à déterminer le texte si c'est du texte :P
Quand le gros chat vert écrit
Franchement, AMHA la solution de mdanielm est nickel. Simple, efficace, polyvalente
y'a pas photo :lol:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
EkinOx
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 06 nov. 2018 15:28
Status : Hors ligne

Re: Variable de surbrillance bleu

#7

Message par EkinOx »

Oui je suis dans me début en Autoit, je comprends que mes codes puissent être bizarre des fois ! :lol:
Effectivement c'est une erreur d'avoir placé les deux lignes dans la boucle, c'est modifié merci.

Jusqu'à présent pour utiliser une des "options" je devais au préalable sélectionner le texte à modifier, le copier et faire F2 (dans ce cas le $TexteOk et le ClipGet() sont en fait la sélection).
Mais effectivement, ajouter un Send("^c") après avoir cliqué sur F2 c'est plus logique !

En fait le Send("{DEL}") c'est pour supprimer le texte sélectionné et Send($TexteOk) renvoie le texte mais modifié (en majuscule, minuscule...).

En fait je pense qu'il faut le tester pour comprendre car j'ai vraiment des idées étranges parfois ! ^^

Merci pour votre implication en tout cas, vous êtes vraiment au top sur ce forum !
Maintenant je crois qu'il n'existe pas de solution cette fois mais avec vos idées je peux au moins finir le programme, et j'en ai d'autres ;)
EkinOx
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 06 nov. 2018 15:28
Status : Hors ligne

Re: Variable de surbrillance bleu

#8

Message par EkinOx »

La correction qui fonctionne parfaitement (juste un petit coup de Koda et c'est OK ^^) :
► Afficher le texte
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Variable de surbrillance bleu

#9

Message par walkson »

Dans ce cas je vous conseille ceci pour éviter de mauvaises surprises !
Func Actionprogramme() ; les actions du programme en fonction du combo choisit

Local $shandle = WinGetHandle("[ACTIVE]"); handle to the window.
Local $sControl = ControlGetFocus("[ACTIVE]");the ClassNameNN of the control
Send("^c")
Local $TexteBrut = ClipGet()
If $TexteBrut = "" Then Return SetError(1) ;pour éviter les erreurs de manipulation
ClipPut("")

If GUICtrlRead($Listederoulante) = "Texte en majuscule" Then
        $TexteOk = StringUpper($TexteBrut)
      ControlSend($shandle, "", $sControl,$TexteOk)
     
ElseIf GUICtrlRead($Listederoulante) = "Texte en minuscule" Then
        $TexteOk = StringLower($TexteBrut)
        ControlSend($shandle, "", $sControl,$TexteOk)

ElseIf GUICtrlRead($Listederoulante) = "Retourner le texte" Then
        $TexteOk = StringReverse("crotte")
        ControlSend($shandle, "", $sControl,$TexteOk)
;.................... etc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre