[..] Coller du texte (Send()++)
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
[..] Coller du texte (Send()++)
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
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
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
Au lieu d'utiliser Send('^v'), pourquoi ne pas utiliser ClipPut ?
N'oublie pas aussi qu'il y à les fonctions _ClipBoard_xxxx.
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é".
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é".
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
Car ctrl+v ca copie pas, ca colleTlem a écrit :Au lieu d'utiliser Send('^v'), pourquoi ne pas utiliser ClipPut ?
Je ne cherche pas a copier du texte, mais a le coller, sans passe par la fonction Send(), trop hasardeuse chez moi
Signez ici
Re: [..] Coller du texte (Send()++)
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.
Aussi non pour ton problème de clip détruit fait bêtement un ClipGet() avant puis un ClipPut() à après.
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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
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
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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.Iste a écrit :ctrl+v ca copie pas, ca colle![]()
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é".
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é".
Re: [..] Coller du texte (Send()++)
Le faire a la main reste encore la meilleur solution 
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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
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
- ayuckers
- Niveau 4

- Messages : 77
- Enregistré le : mer. 28 oct. 2009 14:15
- Localisation : Drome
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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)
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
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
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
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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
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
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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.
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.
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é".
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é".
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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.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.
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
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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é".
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é".
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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 ,," :/
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
Re: [..] Coller du texte (Send()++)
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...
Voici le code
Cordialement
Romain
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
Cordialement
Romain
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
@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.
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.
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.
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é".
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é".
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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
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
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Coller du texte (Send()++)
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.
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é".
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é".
