Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Site de traduction. | |
| | Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Site de traduction. Mar 28 Nov 2017 - 14:44 | |
| Bonjour. @Klaus. Est-il possible d'injecter, sur ce site, une phrase en français, dans le memo de gauche, puis de récupérer sa traduction en anglais, espagnol, dans le memo de droite ? Merci de la suite. https://www.deepl.com/translator | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Site de traduction. Mar 28 Nov 2017 - 16:08 | |
| C'est en effet un site de traduction génial. Je l'ai essayé rapidement, et je dois dire que je suis impressionné. Ils font même de la traduction instantanée au fur et à mesure que l'on tape le texte - très fort ! J'ai regardé avec 3 browsers (Firefox, Edge et Pale Moon), mais je ne trouve pas de handle différenciable pour ces zones. Toute la surface de la page est associée à un même handle. Partant de là, je ne vois pas comment je pourrais viser l'un des mémos ou l'autre. Voici le code avec lequel j'ai essayé: - Code:
-
label tick
dim res%, x%, y%, hnd%
dll_on "KGF.dll" timer 1 : timer_interval 1,100 : on_timer 1,tick : timer_on 1
end
tick: timer_off 1 res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) hnd% = dll_call2("GetObjectUnderPosition",x%,y%) caption 0,str$(x%)+","+str$(y%)+" => "+str$(hnd%) timer_on 1 return Si tu as mieux, je suis preneur... EDIT le 27/11/2017 à 16h29Je suis sur une piste - c'est peut-être possible ! EDIT le 27/11/2017 à 16h37Dommage ! L'objet WebBrowser de KGF.dll n'est pas capable d'afficher cette page. Voici ce que ça donne: - Code:
-
' manage_deepl_com_translator.bas
dim res%, url$, WB%
url$ = "https://www.deepl.com/translator"
full_space 0
dll_on "KGF.dll"
WB% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB%,0,40,width_client(0),height_client(0)) res% = dll_call2("WB_Url",WB%,adr(url$))
end J'aurais pu intervenir au niveau des éléments HTML, mais là, ça ne marchera pas. EDIT le 27/11/2017 à 16h45J'explore une autre piste... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Site de traduction. Mar 28 Nov 2017 - 17:57 | |
| J'ai réussi ! Pour cela, je lance Internet Explorer (IExplore.exe), je l'attache dans la fenêtre et je lui envoie les textes et des ctrl/A et ctrl/C. Ca marche. Mode d'emploi du programme ci-dessous: - lancer le programme - un bouton large apparaît tout en haut. Attendre que le browser s'affiche complètement en bas, puis cliquer sur ce bouton. Le programme envoie alors automatiquement la phrase "Dieser Text ist zu übersetzen.". La traduction apparaît à droite, est copiée dans le presse-papier, puis dans une chaîne de caractères et affichée dans un message. - on a alors en haut la possibilité de saisir un autre texte à traduire. - valider le texte à traduire par un clic sur le bouton en haut à droite "Traduire". On va lors envoyer un ctrl/A <Delete> à la boite à gauche ce qui efface son contenu, puis on lui envoie le texte saisi en haut, etc. Voici le code: - Code:
-
' manage_deepl_com_translator.bas
label go, traduire, envoi
dim res%, url$, WB%, name$, path$ dim Input_x%, Input_y%, Output_x%, Output_y% dim Txt$, hnd%, i%, car$ Input_x% = 200 : Input_y% = 300 Output_x% = 800 : Output_y% = 300
url$ = "https://www.deepl.com/translator"
full_space 0 panel 10 : full_space 10 : height 10,height(10) - 30 : top 10,30
dll_on "KGF.dll"
caption 0,"https://www.deepl.com/translator" name$ = "IExplore" path$ = "C:\Program Files\Internet Explorer\iexplore.exe" res% = dll_call2("SetBrowser",adr(name$),adr(path$)) res% = dll_call3("LoadBrowserToWindow",handle(10),adr(url$),0) button 1 : top 1,0 : left 1,100 : width 1,400 : on_click 1,go : font_bold 1 caption 1,"Valider lorsque le browser sera prêt..." alpha 2 : top 2,0 : left 2,10 : caption 2,"A traduire:" hide 2 edit 3 : top 3,0 : left 3,100 : width 3,800 hide 3 button 4 : top 4,0 : left 4,930 : caption 4,"Traduire" : on_click 4,traduire hide 4 end
go: hide 1 show 2 : show 3 : show 4 hnd% = dll_call2("GetObjectUnderPosition",Input_x%,Input_y%) res% = dll_call2("AbsoluteMouseLeftClick",Input_x%,Input_y%) txt$ = "Dieser Text ist zu übersetzen." gosub envoi return traduire: txt$ = text$(3) res% = dll_call2("AbsoluteMouseLeftClick",Input_x%,Input_y%) pause 2000 car$ = "A" res% = dll_call5("SendSingleCharAsVKCode",hnd%,adr(car$),1,0,0) pause 600 car$ = chr$(48) : ' delete res% = dll_call5("SendSingleCharAsVKCode",hnd%,adr(car$),8,0,0) pause 600 gosub envoi return envoi: for i%=1 to len(txt$) car$ = mid$(txt$,i%,1) res% = dll_call2("SendSingleChar",hnd%,adr(car$)) pause 200 next i% res% = dll_call2("AbsoluteMouseLeftClick",Output_x%,Output_y%) pause 2000 car$ = "A" res% = dll_call5("SendSingleCharAsVKCode",hnd%,adr(car$),1,0,0) pause 600 car$ = "C" res% = dll_call5("SendSingleCharAsVKCode",hnd%,adr(car$),1,0,0) pause 600 txt$ = clipboard_string_paste$ message txt$ return
WB% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB%,0,40,width_client(0),height_client(0)) res% = dll_call2("WB_Url",WB%,adr(url$))
end
Quelques remarques techniques: - les variables - Code:
-
Input_x% = 200 : Input_y% = 300 Output_x% = 800 : Output_y% = 300 contiennent les positions auxquelles le programme va cliquer pour se positionner dans les cases respectives. Elles sont peut-être à ajuster en fonction des dimensions et de la résolution de l'écran. - les différentes lignes "PAUSE" sont importantes, et leur délai est réglé sur ce qui est nécessaire sur mon système. Conseil: essayer tel quel. Si ça passe - tant mieux. On peut alors essayer de grignoter sur tel ou tel délai, en fonction de la performance du système. Si ça ne passe pas, il faut alors trouver lequel des caractères à envoyer ne passe pas, puis rallonger de délai juste au-dessus. ATTENTION !Aucune disposition n'est prise pour arrêter IExplore.exe lorsque le programme s'arrête ! Il faut l'arrêter avec le gestionnaire des tâches ! | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Site de traduction. Mar 28 Nov 2017 - 19:44 | |
| Klaus
si sa te donne une idée avec Mozilla tu peut récupérer le code source de la page
en utilisant "examiner la page" en cliquant sur le bouton droit de la sourie mais c'est p'tet une anerie que je dis!! | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Site de traduction. Mar 28 Nov 2017 - 19:51 | |
| je retire ce que j'ai dit | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Site de traduction Mar 28 Nov 2017 - 20:12 | |
| Bonsoir.
Génial Klaus, tout fonctionne parfaitement. Il est vrai qu'il faut bien ajuster les pauses. Dans le cas contraire, aucune traduction n'est réalisée. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Site de traduction. Mar 28 Nov 2017 - 21:00 | |
| @Pascal10000: - Citation :
- sourie mais c'est p'tet une anerie que je dis!
Non, ce n'est pas une ânerie. On peut récupérer le contenu HTML de n'importe quelle page, et j'ai des fonctions pour cela dans KGF.dll. Le problème, c'est d'injecter du contenu dans un élément HTML spécifique. Ce n'est pas simple. Je peux le faire via mon objet WebBrowser, mais malheureusement, la page du site concerné n'est pas compatible. J'ai donc tenté de passer par un détour - envoyer des clics et des caractères directement dans la fenêtre. Et là, ça marche. | |
| | | Contenu sponsorisé
| Sujet: Re: Site de traduction. | |
| |
| | | | Site de traduction. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |