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 |
|
|
| Fonctions d'envoyer de touches à un objet interne ou externe | |
| | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 9 Sep 2012 - 13:37 | |
| sniff... et la dll reste active | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 9 Sep 2012 - 13:38 | |
| @ Klaus, Pourrais tu remettre le code du source avec toutes tes modifs, je en sais plus lequel est le bon... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 13:43 | |
| Tu n'as certainement pas la dernière version de la DLL. Cela doit être: - Citation :
- V1.54 08/09/2012 ajout fonctions d'envoi decaractères à un objet
GetActiveWindow, GetActiveWindowTitle, SendStringAsText La fonction qui pose problème est GetActiveWindowTitle qui fait partie de la nouvelle version. Voici le source à jour: - Code:
-
' connexion_MyDrive.bas
label MyDrive, choix, close0 dim s$, res%, hnd%, hnd0%, titre$
dll_on "KGF.dll"
width 0,440 : height 0,280 : on_close 0,close0
list 1 : height 1,200 : width 1,400 on_click 1,choix item_add 1,"panoramic@cosmos70" item_add 1,"panoramic@klausgunther"
button 2 : top 2,210 : left 2,10 caption 2,"MyDrive" : on_click 2,MyDrive hnd0% = handle(0)
end
close0: dll_off return
MyDrive: hide 0 Execute "http://www.mydrive.ch/login" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "Login |" )>0 show 0 return choix: hide 0 pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) if instr(titre$, "Login |" )=0 show 0 message "Il faut d'abord cliquer sur [MyDrive] !" message "Le titre actuel est: ["+titre$+"]" return end_if s$ = item_index$(1) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = "panoramic123" res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 return
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 9 Sep 2012 - 13:47 | |
| je n'arrive plus à savoir ma boite à outils qui doit me donner la version plante aussi... Edit : Chrome est une vraie plaie pour les téléchargements sur my drive, j'ai beau effacer la page des téléchargements il me re télécharge toujours la même version... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 13:55 | |
| Tu fais ceci: - Code:
-
dim vers$, vers% vers$ = string$(25," ") vers% = DLL_call1("KGFdllVersion", adr(vers$) ) message str$(vers%)+" correspond à "+vers$
Extrait de KGF.hlp (à télécharger aussi !) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 9 Sep 2012 - 13:56 | |
| Je suis retourné chez my drive avec Firefox et j'ai eu la version 1.53 Apparemment c'est la bonne les fonctions sont là... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 9 Sep 2012 - 14:03 | |
| Cà fonctionne !!! C'est génial çà Klaus !!!
Un bon outils pour se connecter sur tout les webdav... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:05 | |
| Oups... J'avais mis à jour le commentaire dans l'historique des modifications, mais pas les valeurs dans la fonction qui retourne la version ! C'est corrigé. ceci dit, pour toi cela ne change rien, car sur le plan des fonctionnalités, la version sur MyDrive était à jour. Seule le numéro de version retourné n'était pas bon. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:12 | |
| En tout cas Bravo Klaus. Alors,qu'as tu de prévu maintenant dans ta to do list ? un peu de repos ou tu enchaine direct sur un truc ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:15 | |
| Je vais reprende les fonctions de chargement, sauvegarde et analyse de fichiers images afin d'harmoniser le tout pour tout type d'images supporté.
Ensuite, je vais ajouter des fonctions de lecture dans le registre de Windows.
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:23 | |
| Dis pour les fonction d'images, un browser avec aperçu ça te tente comme objet ? c'est un petit défit technique mais pas plus compliquer, je pense que tes listes synchro avec l'usage de la DLL pour avoir l'aperçu à la bonne taille ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:34 | |
| A voir. Peut-être ultérieurement. | |
| | | Invité Invité
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:39 | |
| Puisque je quitte cette partie pour reprendre plus tard ce que je dois faire, je repris le programme, avec les noms que j'ai retrouvé (j'ai cherché hier soir). Pour les autres je ne connais pas. - Code:
-
' connexion_MyDrive.bas
label MyDrive, choix,quit dim s$, res%, hnd%, hnd0%, titre$
dll_on "E:\COURS_Pano\DLLs\KGF.dll"
width 0,440 : height 0,280
list 1 : height 1,200 : width 1,400 on_click 1,choix dlist 3 item_add 1,"panoramic@cosmos70" item_add 3,"panoramic123" item_add 1,"panoramic@klausgunther" item_add 3,"panoramic123" item_add 1,"panoramic@papydall" item_add 3,"panoramic123" item_add 1,"panoramic@bignono" item_add 3,"panoramic123" item_add 1,"panoramic@jicehel" item_add 3,"panoramic123" item_add 1,"panoramic@ygeronimi" item_add 3,"panoramic123" item_add 1,"panoramic@nardo26" item_add 3,"panoramic123"
button 2 : top 2,210 : left 2,10 caption 2,"MyDrive" : on_click 2,MyDrive
on_close 0,quit hnd0% = handle(0)
end
MyDrive: hide 0 Execute "http://www.mydrive.ch/login" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "Login | " ) > 0 show 0 clipboard_string_copy titre$ return if left$(titre$,8) <> "Login | " show 0 message "Il faut d'abord cliquer sur [MyDrive] !" message "Le titre actuel est: ["+titre$+"]" return end_if to_foreground 0 choix:
hide 0 pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$))
s$ = item_index$(1) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 s$ = item_read$(3, item_index(1)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 to_background 0 return quit: dll_off terminate
Le mot de passe est individuel pour pouvoir être modifié. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 14:50 | |
| Merci pour cette version plus aboutie. Elle a néanmoins un petit problème entre les lignes 56 et 64. J'ai intégré tes modifs dans ma version qui marche avec tous les browsers, et la voilà: - Code:
-
' connexion_MyDrive.bas
label MyDrive, choix, close0 dim s$, res%, hnd%, hnd0%, titre$
dll_on "KGF.dll"
width 0,440 : height 0,280 : on_close 0,close0
list 1 : height 1,200 : width 1,400 on_click 1,choix dlist 3 item_add 1,"panoramic@cosmos70" item_add 3,"panoramic123"
item_add 1,"panoramic@klausgunther" item_add 3,"panoramic123"
item_add 1,"panoramic@papydall" item_add 3,"panoramic123"
item_add 1,"panoramic@bignono" item_add 3,"panoramic123"
item_add 1,"panoramic@jicehel" item_add 3,"panoramic123"
item_add 1,"panoramic@ygeronimi" item_add 3,"panoramic123"
item_add 1,"panoramic@nardo26" item_add 3,"panoramic123"
button 2 : top 2,210 : left 2,10 caption 2,"MyDrive" : on_click 2,MyDrive hnd0% = handle(0)
end
close0: dll_off return
MyDrive: hide 0 Execute "http://www.mydrive.ch/login" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "Login |" )>0 show 0 return choix: hide 0 pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) if instr(titre$, "Login |" )=0 show 0 message "Il faut d'abord cliquer sur [MyDrive] !" message "Le titre actuel est: ["+titre$+"]" return end_if s$ = item_index$(1) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 s$ = item_read$(3, item_index(1)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 return
| |
| | | Invité Invité
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 15:00 | |
| Oui bizarre. J'ai du faire un <CTRL z> de trop, lorsque remis le nom de la dll. Chez moi, je le mets en dur vu que j'ai des programmes qui travaille dans tous les sens, et différentes clés USB.
EDIT, je viens de faire une page arrière, il y a eu une vraie discution depuis midi. |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 17:39 | |
| A l'aide Klaus, Je me bat depuis ce matin avec ton programme pour lancer automatiquement le site Turbosquid, puis le login et le mot de passe. J'arrive jusqu'à la page du Login, mais plus rien après. Sans te déranger, peux-tu voir avec ta dll comment faire. Je dois mal m'y prendre. Merci, A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 18:01 | |
| Je suis en train de voir ça... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 18:29 | |
| Voilà, c'est fait. La difficulté, c'est au moment du login, par Javascript, la page web affiche un cadre par-dessus la page web, et ce cadre n'est pas accessible simplement par des TAB. Il faut cliquer dedans pour l'activer, puis on peut utiliser les TAB. Le clic est fait par simulation via la DLL aussi, en en profitant du fait que le cadre de login est centré sur l'écran (utilise le browser en fenêtre maximisé, pour cela). Voici ce que ça donne: (j'ai mis n'importe quoi en identifiant et mot de passe, bien sûr): - Code:
-
' connexion_MyDrive.bas
label MyDrive, choix, close0, TurboSquid dim s$, res%, hnd%, hnd0%, titre$, x%, y%
dll_on "KGF.dll"
width 0,440 : height 0,280 : on_close 0,close0
list 1 : height 1,200 : width 1,400 on_click 1,choix dlist 3 : ' mots de passe item_add 1,"panoramic@cosmos70" item_add 3,"panoramic123"
item_add 1,"panoramic@klausgunther" item_add 3,"panoramic123"
item_add 1,"panoramic@papydall" item_add 3,"panoramic123"
item_add 1,"panoramic@bignono" item_add 3,"panoramic123"
item_add 1,"panoramic@jicehel" item_add 3,"panoramic123"
item_add 1,"panoramic@ygeronimi" item_add 3,"panoramic123"
item_add 1,"panoramic@nardo26" item_add 3,"panoramic123" item_add 1,"turbosquid1" item_add 3,"turbosquid123"
button 2 : top 2,210 : left 2,10 caption 2,"MyDrive" : on_click 2,MyDrive button 4 : top 4,210 : left 4,110 caption 4,"TurboSquid" : on_click 4,TurboSquid
hnd0% = handle(0)
end
close0: dll_off return
MyDrive: hide 0 Execute "http://www.mydrive.ch/login" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "Login |" )>0 show 0 return
TurboSquid: hide 0 Execute "http://www.turbosquid.com/" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "at TurboSquid" )>0 show 0 return
choix: hide 0 pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) if instr(titre$, "Login |" )>0 s$ = item_index$(1) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 s$ = item_read$(3, item_index(1)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 return end_if if instr(titre$, "at TurboSquid" )>0 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 x% = screen_x/2 y% = screen_y/3 res% = dll_call2("AbsoluteMouseLeftClick",x%,y%) pause 500 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = item_index$(1) : ' identifiant res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = item_read$(3, item_index(1)) : ' mot de passe res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) show 0 return end_if show 0 message "Il faut d'abord cliquer sur [MyDrive] ou [TurboSquid] !" message "Le titre actuel est: ["+titre$+"]" return
| |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 19:32 | |
| Je te remercie de ta sollicitude Klaus, mais ça ne fonctionne pas chez moi [img] [/img] Ça ouvre bien turbosquid au début, puis après la page de Login, il aiguille sur google! | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 20:00 | |
| finalement,j'y suis attivé avec ce programme: - Code:
-
' connexion_Turbosquid.bas ' Fonctionne avec la version 1.54 de KGF.dll label fin dim a,s$, res%, hnd%, hnd0%, titre$,x%,y% width 0,270:height 0,150:top 0,(screen_y-width(0))/2:left 0,(screen_x-height(0))/2 font_bold 0:caption 0,"Lanceur Turbosquid" alpha 1:left 1,20:top 1,25:caption 1,"Lancement de Turbosquid en mode:" button 2:left 2,20:top 2,50:width 2,100:caption 2,"NORMAL ?" button 3:left 3,130:top 3,50:width 3,100:caption 3,"LOGIN / MDP ?" while a=0 if clicked(2)=1 then a=1:execute "http://www.turbosquid.com/" if clicked(3)=1 then a=2 end_while if a=1 then goto fin dll_on "c:\mesprog\KGF154.dll" hnd0%=handle(0) s$=chr$(9) hide 0 Execute "https://www.turbosquid.com/Login"
repeat pause 3000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until left$(titre$,30) = "TurboSquid -- New Member Login"
pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) show 0 titre$=rtrim$(titre$) message "lancement de Turbosquid" hide 0 hnd% = dll_call0("GetActiveControl") pause 1000 x% = screen_x/2 y% = screen_y/3 res% = dll_call2("AbsoluteMouseLeftClick",x%,y%) pause 500 s$ = "NAUNAU": ' <== mettre son login res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$="mot_de_passe": ' <== mettre son mot de passe res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 dll_off fin: terminate
Mais le problème, au momment où Internet s'ouvre, je suis obligé de vite cliquer dans l'icone rectangle à coté de la croix de fermeture pour maximiser la fenêtre. N'y aurait-il pas moyen justement de commander l'ouverture maximale de la fenêtre dans KGF.dll? edit: Je vais au Miam en attendant!!! | |
| | | Invité Invité
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 21:35 | |
| Je viens de mettre sur mon Webdaw, je ne sais plus si cela s'appelle comme cela, un programme fourni avec AutoIt, qui permet de connaitre le handle, le type 'objet, la position de la souris, etc... pour justement faire les réglages.
Vu que j'entend toujours dire que AutoIt est gratuid, et libre de droit, il ne devrait pas y avoir de problème. ça s'appel: Au3Info.exe. Il faut cliquer sur la cible, et la placer à l'endroit que vous voulez avoir les infos. Le programme Pagiciel, n'est pas a télécharger, c'était juste pour voir le fonctionnement avec MyDrive. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 22:06 | |
| @Bignono: Qu'est-ce que tu utilises comme browser ? Les miens s'ouvrent toujours avec la taille de fenêtre avec laquelle ils ont été fermés. Et non seulement cela: s'ils ne sont pas maximisés, il s'ouvrent à la position où ils étaient lors de leur fermeture. As-tu essayé cela ? Maximiser le browser, le fermer, puis lancer le programme ?
Sinon, indépendamment de cela, je vais ajouter la possibilité de tenir compte du rectangle effectivement occupé par la fenêtre ciblée, et je pense résoudre ce problème de cette manière. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 22:32 | |
| Sinon Klaus, j'ai essayé de simuler un clic de souris justement dans le rectangle en haut à droite qui maximise la fenêtre en faisant: - Code:
-
x% = screen_x-65 y% = 10 res% = dll_call2("AbsoluteMouseLeftClick",x%,y%)
Mais le problème, c'est qu'il a pris la dimension de l'écran et non de la fenêtre. Ce qu'il faudrait c'est récupérer les dimensions en largeur de la fenêtre et on peut simuler un clic pour maximiser la fenêtre. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 22:51 | |
| J'ai résolu le problème. A la fois celui d'une fenêtre de taille variable et celui que tu viens de décrire. J'ai ajouté une nouvelle fonction à KGF.dll, dans la rubrique de la gestion des fenêtres: - Code:
-
res% = DLL_call5("GetFormMetrics",hnd%,adr(gauche%),adr(haut%),adr(largeur%),adr(hauteur%)) La dll passe à la version V1.55. La doc est à jour. Tu vois ce que la fonction fait: tu lui passes le handle d'une form, et elle retourne à travers les 4 derniers paramètres (passés par ADR() !) la position de la fenêtre ainsi que sa largeur et hauteurn le tout en pixels et mesurés en coordonnées absolues de l'écran. Partant de là, tu peux utiliser gauche%+largeur%+(décalage à déterminer) comme position horizontale du clic dans la case qui t'intéresse. J'ai intégré cette fonction dans mon programme, qui chez moi tente de se connecter à TurboSquid sans problème: - Code:
-
' connexion_MyDrive.bas
label MyDrive, choix, close0, TurboSquid dim s$, res%, hnd%, hnd0%, titre$, x%, y% dim tp%,lft%,wdt%,hgt%
dll_on "KGF.dll"
width 0,440 : height 0,280 : on_close 0,close0
list 1 : height 1,200 : width 1,400 on_click 1,choix dlist 3 : ' mots de passe item_add 1,"panoramic@cosmos70" item_add 3,"panoramic123"
item_add 1,"panoramic@klausgunther" item_add 3,"panoramic123"
item_add 1,"panoramic@papydall" item_add 3,"panoramic123"
item_add 1,"panoramic@bignono" item_add 3,"panoramic123"
item_add 1,"panoramic@jicehel" item_add 3,"panoramic123"
item_add 1,"panoramic@ygeronimi" item_add 3,"panoramic123"
item_add 1,"panoramic@nardo26" item_add 3,"panoramic123" item_add 1,"turbosquid1" item_add 3,"turbosquid123"
button 2 : top 2,210 : left 2,10 caption 2,"MyDrive" : on_click 2,MyDrive button 4 : top 4,210 : left 4,110 caption 4,"TurboSquid" : on_click 4,TurboSquid
hnd0% = handle(0)
end
close0: dll_off return
MyDrive: hide 0 Execute "http://www.mydrive.ch/login" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "Login |" )>0 show 0 return
TurboSquid: hide 0 Execute "http://www.turbosquid.com/" repeat pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) titre$ = trim$(titre$) until instr(titre$, "at TurboSquid" )>0 show 0 return
choix: hide 0 pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) if instr(titre$, "Login |" )>0 s$ = item_index$(1) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 s$ = item_read$(3, item_index(1)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 return end_if if instr(titre$, "at TurboSquid" )>0 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 res% = dll_call5("GetFormMetrics",hnd%,adr(lft%),adr(tp%),adr(wdt%),adr(hgt%)) x% = lft% + wdt%/2 y% = tp% + hgt%/3 res% = dll_call2("AbsoluteMouseLeftClick",x%,y%) pause 500 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = item_index$(1) : ' identifiant res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = item_read$(3, item_index(1)) : ' mot de passe res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 500 show 0 return end_if show 0 message "Il faut d'abord cliquer sur [MyDrive] ou [TurboSquid] !" message "Le titre actuel est: ["+titre$+"]" return
Je m'éclate avec Delphi et les DLLs ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe Dim 9 Sep 2012 - 23:41 | |
| Géant ... tu sais qu'avec ça on peut faire de sacrés programmes de scripting ... juste géant ... | |
| | | Contenu sponsorisé
| Sujet: Re: Fonctions d'envoyer de touches à un objet interne ou externe | |
| |
| | | | Fonctions d'envoyer de touches à un objet interne ou externe | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |