[..] Coller du texte (Send()++)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

[..] Coller du texte (Send()++)

#1

Message par Iste »

Salutations.

J'utilise souvent la fonction Send(). Bon, pas tant que ca, car elle bug énormément chez moi...
Quand je Send() du texte, il arrive tres lentement, et rarement complet ! Manque toujours un bout -_-
Donc j'ai rusé, en faisant un Clicput() du texte, puis un Send('^v') !

Sauf que, déja ca détruit mon clip, que ca marche pas non plus a tout les coup, et que ca peut pas ControlSend()...

D'ou ma question, comment faire un Send() et un ControlSend() qui marche bien ?

Merci
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#2

Message par Tlem »

Au lieu d'utiliser Send('^v'), pourquoi ne pas utiliser ClipPut ?
N'oublie pas aussi qu'il y à les fonctions _ClipBoard_xxxx. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#3

Message par Iste »

Tlem a écrit :Au lieu d'utiliser Send('^v'), pourquoi ne pas utiliser ClipPut ?
Car ctrl+v ca copie pas, ca colle :P

Je ne cherche pas a copier du texte, mais a le coller, sans passe par la fonction Send(), trop hasardeuse chez moi
Signez ici
Dididj
Niveau 4
Niveau 4
Messages : 58
Enregistré le : lun. 17 août 2009 17:29
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#4

Message par Dididj »

Regarde du coté de SendKeyDelay ou de SendKeyDownDelay ( je sais plus trop ^^ ). Il est fort probable que AutoIt "n'enfonce" pas les touches assez longtemps.
Aussi non pour ton problème de clip détruit fait bêtement un ClipGet() avant puis un ClipPut() à après.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#5

Message par Iste »

J'ai déja regardé du coté des options de send(), mais ca ne change rien, la fonction reste aussi aléatoire.
Pour le clipput() / Clipget() j'y ai déja pensé, mais c'est pas si simple. ClipGet() ne fonctionne que pour du texte et jouer avec Clipboard.au3 serait trop long, pour un résultat toujours pas au point
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#6

Message par Tlem »

Iste a écrit :ctrl+v ca copie pas, ca colle :P
Hummm oui effectivement, je voulais dire ClipGet, mais à 3H00 du mat après un repas bien arrosé, je n'était pas tout à fait au point. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Dididj
Niveau 4
Niveau 4
Messages : 58
Enregistré le : lun. 17 août 2009 17:29
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#7

Message par Dididj »

Le faire a la main reste encore la meilleur solution :lol:
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#8

Message par Iste »

Le but étant de pouvoir coller de longs documents générés en temps réel par mon script dans une zone de saisie quelconque, ca me semble bien moins pratique !

Bref, j'ai un petit logiciel de clavier virtuel qui offre la possibilité de taper le texte dans une zone de saisie, et de l'envoyer d'un coup. Ca fonctionne tres bien, aussi, je pense qu'il doit etre possible de faire la meme choe en au3... mais comment ???

Ca fait bien plus que 30minutes que je cherche ;)
Signez ici
Avatar du membre
ayuckers
Niveau 4
Niveau 4
Messages : 77
Enregistré le : mer. 28 oct. 2009 14:15
Localisation : Drome
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#9

Message par ayuckers »

Bon j'ai peut être un début de solution, car moi aussi j'ai des souci avec les fonctions copier coller de Autoit.
En partant d'une UDF trouvé sur le forum anglais j'en ai extrait une fonction collé.
pour le moment sa ne fonctionne que si on a deja fait un CTRL+C
Le collé se fait dans un bloc Note, mais il est possible de l'adapter pour coller vers n'importe quel Control.

Tout tourne autour de la fonction : SendMessage()
Voici le resultat : (sauf erreur de ma part cette exemple fonctionne directement)
► Afficher le texte
Si quelqu'un veut bien m'aider a faire une UDF copier/ coller
J'ai juste extrait quelques fonctions de l'UDF : GuiRichEdit_0_5
On peut la récupèrer ici : http://www.autoitscript.fr/forum/viewto ... 74&start=0
Il y a plein de chose intéressante aux niveau du copier/coller/selection/stream.....

@Iste : il y une fonction qui pourrait t'intéressé : _GUICtrlRichEdit_StreamFromFile
bien sur il fraudas certainement l'adapter.

Du coup t'as question m'a fait planché sur une idée que j'avait et je croit que j'ai en partit résolu mes problème
reste plus qu'a tester sa demain :)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#10

Message par Iste »

Alors ca, c'est vraiment génial !

Meme si ca garde le probleme de destruction du clipboard, la possibilité d'envoyer tant de messages a des win, arf ! top coule !

Bref, si quelqu'un du plus doué que moi arrive a sauvegarder le clipboard pour le reconstituer, ca serait bricolé mais parfait :)

Enfin, l'idéal serait une fonction genre SendInput() qui ciblerai une fenêtre.. (mais déja l'original j'arrive pas a la faire tourner...)
Enfin, rien que pour le undo ca valait le coup ;)

Edit : Le fait de devoir récup l'id de l'edit est en fait trop pas assez souple pour moi :s
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#11

Message par Tlem »

Il est difficile de voir le problème sans éléments supplémentaires.

Par contre je ne comprend pas pourquoi tu dit que la fonction ControlSend() est aléatoire ...
Si tu as bien donné les éléments de la destination du texte, l'ensemble du texte est envoyé au contrôle. :shock:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#12

Message par Iste »

Tlem a écrit :Par contre je ne comprend pas pourquoi tu dit que la fonction ControlSend() est aléatoire ...
Si tu as bien donné les éléments de la destination du texte, l'ensemble du texte est envoyé au contrôle. :shock:
Et bah justement, non ! Sur des ordi plus puissant je n'ai pas trop de souci, mais sur le mien, il manque presque a chaque foi des bouts de la chaine.

En fait, je cherche a générer du texte, que mon script récup d'après plusieurs page php de ma conception et quelque fichier. Il génère un joli rapport, puis bah...
Pour le moment il le met dans le clip, j'ai juste donc a faire CTRL+MAJ+V pour que le script agisse, puis CTRL+V pour coller le texte la ou j'écrivais. Ca peut etre un bloc note, un email, un forum, une fenêtre msn...

Bref, comme actuellement la destruction du presse-papier, et la manip assez galère m'ennuie (et qu'en plus j'ai souvent des souci a cause de ca), j'ai décider de poster pour avoir une alternative a Send(), et tant qu'on y est ControlSend() qui ne marche pas mieux chez moi.
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#13

Message par Tlem »

En cherchant une solution, j'ai peut être trouvé le problème du ControlSend, ainsi qu'une alternative. Tout est dans le code à tester.
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#14

Message par Iste »

A 1er vu, ControlSend() et Send() est toujours aussi peu fiable, de plus je dois jouer avec plusieurs Send(), quand j'ai besoin des "special characters" ^^' (pour les raccourcis clavier)

ControlSetText() marche très bien, mais il me faut connaitre les controlID et tout et tout, ce qui au final, bah c'est pas plus rapide. De plus, ca pose certain problème avec certaines zones de saisies.

Edit : Avec le flag1 comment faire des majuscules ? Send("Salut ??") ecris "salut ,," :/
Signez ici
Avatar du membre
aikiox
Niveau 4
Niveau 4
Messages : 51
Enregistré le : jeu. 17 sept. 2009 13:04
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#15

Message par aikiox »

Bonjour,
Je tiens a remercier Iste car il m'a beaucoup aidé puisque je n'arrivais pas à ecrire à partir d'un script vers une page html, il y ecrivait des chiffres tandis que je gardais le meme code mais quand j'ecrivais dans le notepad il n'y avait aucun problème.
Grace à Clipput, j'ai reussi a contourner le problème. Effectivement, la fonction send pose quelques problèmes...
► Afficher le texte
Voici le code

Cordialement
Romain
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#16

Message par Tlem »

@aikiox
N'oubliez pas les balises de code lorsque vous écrivez du code dans vos messages, même si vous utilisez le Spoiler.

@Iste
J'ai vraiment du mal à comprendre ton problème.
Si tu as un texte à coller dans un zone de saisie, il faut que cette zone soit active pour pouvoir y faire un CTRL+V. :roll:
Et si tu décide d'envoyer le texte directement au contrôle, tu sera obligé de récupérer l'ID du contrôle. Donc il faut que tu choisisse la méthode : Ou bien par un CTRL+V ou bien par l'envoi du texte directement au contrôle.

Aux vues de ce que tu as décrit, le CTRL+V semble la solution la plus fiable.
Donc personnellement, je chercherais à faire un script résident qui réagirait au clic d'un contrôle si par exemple une combinaison de touche est enfoncée en même temps que le clic, alors un CTRL+V est effectué dans ce contrôle.
Maintenant, il y à sans doute d'autres manières de voir les choses, mais cela dépend de tes besoins et de comment est organisé ton travail. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#17

Message par Iste »

Oui oui, me suis mal exprimer, ControlSetText() marche parfaitement pour remplacer ControlSend() (enfin, presque. Pour tout ce qui est zone de saisie clasique c'est niquel, mais pour un navigateur internet, ou une interface flash ou autre...)

Ensuite, oui Ctrl+V marche bien (manuellement) une foi que j'ai Clipé le texte. Mais automatiser le Ctrl+V ne marche pas a tout les coups (bah ouais, Send() quoi..)
Donc si je poste, c'est car la destruction du clipboard + Le collage, c'est trop d'incertitude pour moi.

Actuellement, je peux me débrouiller avec ce que j'ai récup dans ce post. Toutes fois, ca ne règle pas la question de façon général.
Pour dire que je suis pas bloqué, mais toujours (presque) aussi avancé qu'avant.

Bref, pour résumer :

Pour remplacer le Send()... Bah j'en suis au meme point :
Obligé de passer par un clipput() + Send("^v") = destruction du clip + Résultats non sûrs sur le coller

Pour remplacer le ControlSend(), c'est un peu mieux :

Pour tout ce qui est classique, ControlSetText() est super, mais pour toute les autre situation...
Me faut donc un moyen de "simuler" un controlsend() (qui rappelons, simule une frape clavier vers une fenetre non active)


Donc voila, rien d'urgent, j'ai réussi a m'en passer jusque la, notamment grâce a des fonctions de vérifications, car les fonction Send() et ControlSend() font bien ce que je veux, juste pas a tout les coup... mais je me suis dis qu'il était temps de venir demander ici, au cas ou je me bloque pour rien...
Bref vala
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Coller du texte (Send()++)

#18

Message par Tlem »

Hummm, difficile d'aider plus, car je n'ai personnellement pas rencontré les mêmes problèmes que toi avec les fonctions dont tu parle.
Mais peut être quelqu'un d'autre a trouvé une solution. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre