Page 1 sur 1

Variable de surbrillance bleu

Posté : ven. 01 mars 2019 11:06
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.

Re: Variable de surbrillance bleu

Posté : ven. 01 mars 2019 17:40
par mdanielm
Bonsoir,
Peut-être:
-Envoyer Ctrl-C à la fenêtre
-Récupérer le presse-papier dans une variable
Trop simple?

Re: Variable de surbrillance bleu

Posté : sam. 02 mars 2019 00:09
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

Re: Variable de surbrillance bleu

Posté : sam. 02 mars 2019 21:37
par mikell
Franchement, AMHA la solution de mdanielm est nickel. Simple, efficace, polyvalente

Re: Variable de surbrillance bleu

Posté : lun. 04 mars 2019 12:01
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 ^^".

Re: Variable de surbrillance bleu

Posté : lun. 04 mars 2019 22:17
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:

Re: Variable de surbrillance bleu

Posté : mar. 05 mars 2019 15:20
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 ;)

Re: Variable de surbrillance bleu

Posté : mar. 05 mars 2019 15:44
par EkinOx
La correction qui fonctionne parfaitement (juste un petit coup de Koda et c'est OK ^^) :
► Afficher le texte

Re: Variable de surbrillance bleu

Posté : mar. 05 mars 2019 18:37
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