Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle DLL Pilote.dll Ven 24 Fév 2012 - 10:07 | |
| J'ai mis en ligne une nouvelle version de pilote.dll. Les nouvelles fonctions sont: res% = dll_call0("Open_StdInput”) len% = dll_call1("Read_StdInput”,adr(text$)) res% = dll_call0("Close_StdInput”) Vkbincode% = dll_call1("Get_VK_code" ,adr(vknametext$)) res% = dll_call2("Get_VK_name" ,vkbincode%,adr(vknametext$)) res% = dll_call2("SendCharacter" ,adr(windowtitle$),adr(text$)) res% = dll_call2(“SendCharacterByHandle”,hnd%,adr(text$)) hnd% = dll_call3("FindFirstWindow",adr(titre$),adr(classe$),mode%) hnd% = dll_call3("FindFirstWindow",adr(titre$),adr(classe$),mode%) Res% = dll_call1("GetWindowFilter",adr(filter$)) Res% = dll_call1("SetWindowFilter",adr(filter$)) On peut maintenant envoyer n'importe quel texte à n'importe quelle fenêtre Windows (programme Panoramic, outil Windows comme Word, Notepad, ...) envoyer n'importe quelle touche fonction à n'importe quelle fenêtre etc. On peut aussi obtenir la liste des fenêtres actives de Windows, éventuellement filtrée par classe de fenêtre, etc. Toute la doc est dans le fichier de documentation habituel. Voici un programme de démo (dé préférence à utiliser dans sa forme EXE): - Code:
-
' test Send_Character.bas
label envoyer, fermer, choix, charger, maj
dim res%, id$, txt$, s$, hnd%, c$, m%, filtre$ id$ = "test.txt - Bloc-notes"
height 0,550 : width 0,680 : caption 0,"Send_Character"
edit 1 : top 1,40 : left 1,10 : width 1,200 edit 2 : top 2,40 : left 2,220 alpha 111 : top 111,20 : left 111,10 : caption 111,"Texte à envoyer:" alpha 112 : top 112,20 : left 112,220 : caption 112,"Titre de la fenêtre ciblée:" alpha 113 : top 113,20 : left 113,350 : caption 113,"Handle de la fenêtre ciblée" alpha 114 : top 114,160 : left 114,350 : caption 114,"Liste des fenêtres éligibles:" list 3 : top 3,100 : left 3,10 : width 3,330 : height 3,400 edit 4 : top 4,40 : left 4,350 container_option 5 : top 5,20 : left 5,500 : height 5,80 : width 5,80 caption 5,"Ciblée par" option 6 : parent 6,5 : top 6,20 : left 6,10 : width 6,60 : caption 6,"Titre" option 7 : parent 7,5 : top 7,40 : left 7,10 : width 7,60 : caption 7,"Handle"
list 8 : top 8,180 : left 8,350 : width 8,300 : height 8,320 on_click 8,choix
container_option 9 : top 9,20 : left 9,580 : height 9,80 : width 9,80 caption 9,"Filtrer" option 10 : parent 10,9 : top 10,20 : left 10,10 : width 10,60 : caption 10,"Oui" option 11 : parent 11,9 : top 11,40 : left 11,10 : width 11,60 : caption 11,"Non" option 12 : parent 12,9 : top 12,60 : left 12,10 : width 12,60 : caption 12,"Debug"
edit 13 : top 13,110 : left 13,350 : width 13,250
button 100 : left 100,10 : top 100,70 : caption 100,"Envoyer" on_click 100,envoyer button 101 : left 101,220 : top 101,70 : caption 101,"Fermer ce programme" width 101,120 : on_click 101,fermer button 102 : left 102,500 : top 102,150 : caption 102,"Charger les cibles" width 102,120 : on_click 102,charger button 103 : left 103,610 : top 103,110 : width 103,50 : caption 103,"Maj" on_click 103,maj text 1,"+ceci est un texte" text 2,id$ text 4,str$(handle_form(id$))
item_add 3,"Le texte saisi est envoyé au programme ciblé." item_add 3,"" item_add 3,"Les caractères suivants ont une fonction particulière:" item_add 3," ° = prendre le caractère suivant littéralement" item_add 3,"" item_add 3," + = Shift" item_add 3," ^ = Control" item_add 3," % = Alt" item_add 3,"" item_add 3,"Les modificateurs +, ^ et % agissent uniquement sur le caractère" item_add 3,"suivant. On peut laisser agir un modificateur sur un groupe de" item_add 3,"caractères en utilisant les parenthèses:" item_add 3," +(abcde)fgh produira ABCDEfgh" item_add 3,"" item_add 3,"Les accolades permettent de spécifier une touche fonction parmi" item_add 3,"la liste ci-après. Ce sont les codes VK_xxx. Un espace suivi" item_add 3,"d'une valeur numérique indique un facteur de répétition:" item_add 3," {left} = 1 flèche à gauche" item_add 3," {left 12} = 12 flèches à gauche" item_add 3,"" item_add 3,"Liste des codes reconnus:" item_add 3," BKSP, BS, BACKSPACE, BREAK, CAPSLOCK, CLEAR, DEL" item_add 3," DELETE, DOWN, END, ENTER, ESC, ESCAPE, F1...F16" item_add 3," HELP, HOME, INS, LEFT, NUMLOCK, PGDN, PGUP, PRTSC" item_add 3," RIGHT, SCROLLLOCKTAB, UP"
dll_on "pilote.dll" filtre$ = string$(255," ") res% = dll_call1("GetWindowFilter",adr(filtre$)) filtre$ = trim$(filtre$) text 13,filtre$ dll_off
mark_on 6 : mark_on 10
end
envoyer: dll_on "pilote.dll" txt$ = text$(1) id$ = text$(2) if checked(6)=1 res% = dll_call2("SendCharacter",adr(id$),adr(txt$)) else hnd% = val(text$(4)) res% = dll_call2("SendCharacterByHandle",hnd%,adr(txt$)) end_if dll_off return
fermer: text 1,"%{F4}" return
choix: if left$(item_index$(8),1)="(" then return text 2,item_index$(8) text 4,str$(handle_form(text$(2))) return
charger: clear 8 m% = checked(10) dll_on "pilote.dll" ' la ligne suivante est requise une seule fois, après DLL_ON, ' et UNIQUEMENT si l'on change le filtre par défaut sui est: ' TForm1,TApplication res% = dll_call1("SetWindowFilter",adr(filtre$)) : ' recharger le filtre modifié s$ = string$(255," ") c$ = string$(255," ") hnd% = dll_call3("FindFirstWindow",adr(s$),adr(c$),m%) while hnd%<>0 item_add 8,trim$(s$) if checked(12)=1 then item_add 8,"("+trim$(c$)+")" s$ = string$(255," ") c$ = string$(255," ") hnd% = dll_call4("FindNextWindow",hnd%,adr(s$),adr(c$),m%) end_while dll_off return
maj: filtre$ = trim$(text$(13)) ' dll_on "pilote.dll" ' res% = dll_call1("SetWindowFilter",adr(filtre$)) : ' recharger le filtre modifié ' dll_off return
Dernière édition par Klaus le Ven 24 Fév 2012 - 11:24, édité 1 fois | |
|