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 |
|
|
| DLL | |
| | Auteur | Message |
---|
etamioreb
Nombre de messages : 14 Date d'inscription : 11/03/2011
| Sujet: DLL Mar 5 Avr 2011 - 20:02 | |
| | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: DLL Mar 5 Avr 2011 - 20:33 | |
| Merci pour 'info très bien. | |
| | | etamioreb
Nombre de messages : 14 Date d'inscription : 11/03/2011
| Sujet: capture ecran Mer 6 Avr 2011 - 10:42 | |
| - Code:
-
dim r1,r2,vk_snaphot,keyevent_keyup dll_on "user32.dll" keyevent_keyup=2 vk_snaphot=44 r1=dll_call4("keybd_event",vk_snaphot,0,0,0) r2= dll_call4("keybd_event",vk_snaphot,0,keyevent_keyup,0) dll_off
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL Mer 6 Avr 2011 - 11:59 | |
| bonjour etamioreb, C'est vrai que c'est simple pour faire une capture d'écran... Dans le même style, un petit chenillard avec déplacement simulé de la souris: - Code:
-
dll_on "user32.dll"
hide 0: top 0,screen_y/2:left 0,screen_x/2:width 0,100:height 0,100:show 0
' souris : dim dwFlags, dx, dy, dwData, dwExtraInfo dim MOUSEEVENTF_MOVE,MOUSEEVENTF_ABSOLUTE MOUSEEVENTF_MOVE = 1 MOUSEEVENTF_ABSOLUTE = 32768 dwData = 0 : dwExtraInfo=0
' clavier : dim KEYEVENT_KEYUP dim memStat(4),virtual_code(4),Stat(4) data 144,"NumLock",20,"CapsLock",145,"ScrollLock" KEYEVENT_KEYUP = 2
' divers dim a$,i,r
' on positionne la souris au centre de l'écran, sur les checkbox dwFlags=BIN_OR(MOUSEEVENTF_ABSOLUTE,MOUSEEVENTF_MOVE) : ' mouvement en coordonnées absolues dx = (screen_x/2 )+20 : dx= int((dx / screen_x)*65535) dy = (screen_y/2 )+40 : dy= int((dy / screen_y)*65535) r = dll_call5("mouse_event",dwFlags,dx,dy,dwData,dwExtraInfo)
' memorise l'état initial du clavier for i=1 to 3 read virtual_code(i) read a$ memStat(i)=dll_call1("GetKeyState",virtual_code(i)) ' si led allumée, on l'éteint if memStat(i)<>0 r = dll_call4("keybd_event",virtual_code(i),0,0,0) r = dll_call4("keybd_event",virtual_code(i),0,KEYEVENT_KEYUP,0) end_if check i:caption i,a$:top i,((i-1)*20)+5:left i,10 Stat(i)=0 next i
' chenillard for i = 1 to 100 if bin_and(i,3)<>0 r = dll_call4("keybd_event",virtual_code(bin_and(i,3)),0,0,0) r = dll_call4("keybd_event",virtual_code(bin_and(i,3)),0,KEYEVENT_KEYUP,0) r = bin_and(i,3) Stat(r)=bin_xor(Stat(r),1) if Stat(r) = 1 mark_on r else mark_off r end_if wait 100 ' mouvement de la souris en relatif dwFlags = MOUSEEVENTF_MOVE : ' on passe en coordonnées relatives dy = 20 : ' +20px pour aller sur le checkbox suivant if r=3 then dy = 40*(-1) :' -40px pour revenir sur le 1er r = dll_call5("mouse_event",dwFlags,0,dy,0,0) end_if next i
' on restitue l'état initial du clavier for i=1 to 3 r=dll_call1("GetKeyState",virtual_code(i)) if memStat(i)<>r r = dll_call4("keybd_event",virtual_code(i),0,0,0) r = dll_call4("keybd_event",virtual_code(i),0,keyevent_keyup,0) end_if next i dll_off terminate [EDIT] - Correction bug calcul d'indice pour virtual_code[ ] - habillage du form 0 - Ajout du déplacement du pointeur de la souris... [/EDIT] Bref, en grattant un peu avec Google, on peut s'amuser un peu... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL Mer 6 Avr 2011 - 23:06 | |
| Bonsoir tout le monde ! Pour ceux que cela intéresse : Le programme précédent ne fonctionnait pas correctement sur mon portable encore ce problème de taille de titre et de bordure J'ai donc remplacé pour la souris, le déplacement relatif par un déplacement absolu. J'ai également profité de l'occasion pour remplacer les mark_xxx par une "simulation" de clic du bouton gauche de la souris. Ce qui me parait plus correct puisque le prog utilise des checkbox. - Code:
-
dll_on "user32.dll"
dim TitleHeight,BorderWidth
hide 0: top 0,screen_y/2:left 0,screen_x/2:width 0,200:height 0,150 picture 1:full_space 1:TitleHeight=150-height(1):BorderWidth = (200-width(1))/2:delete 1 caption 0,str$(TitleHeight)+" "+str$(BorderWidth)+" " show 0
' déclarations pour la souris : dim MOUSEEVENTF_MOVE : MOUSEEVENTF_MOVE = 1 dim MOUSEEVENTF_ABSOLUTE : MOUSEEVENTF_ABSOLUTE = 32768 dim MOUSEEVENTF_LEFTUP : MOUSEEVENTF_LEFTUP = 4 dim MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTDOWN = 2
dim dwFlags dim dx, dy dim dwData : dwData = 0 dim dwExtraInfo : dwExtraInfo = 0
dim mouse_cY : mouse_cY = 65535 / screen_y : ' la largeur de l'écran va de 0 à 65535 dim mouse_cX : mouse_cX = 65535 / screen_x : ' idem pour la hauteur
' déclarations pour le clavier : dim KEYEVENT_KEYUP : KEYEVENT_KEYUP = 2 dim memStat(4),virtual_code(4) data 144,"NumLock",20,"CapsLock",145,"ScrollLock"
' divers dim NomTouche$,i,r dim indice
' ***************************************************************** ' Mémo de l'état initial des touches NUMLOCK,CAPSLOCK et SCROLLLOCK ' ***************************************************************** for i=1 to 3 : ' 3 touches + 3 objets
' 1- lecture du code de la touche correspondante ainsi que sa désignation read virtual_code(i) : read NomTouche$
' 2- Appel à la fct GetKeyState de la DLL : on récupère si la touche est active memStat(i)=dll_call1("GetKeyState",virtual_code(i))
' 3- si c'est le cas (la led est allumée), ' on l'éteint en simulant un appui sur la touche en question if memStat(i)<>0 r = dll_call4("keybd_event",virtual_code(i),0,0,0) : ' nécessaire pour faire un front montant (?) r = dll_call4("keybd_event",virtual_code(i),0,KEYEVENT_KEYUP,0) end_if
' 4- On déclare des checkbox espacés de 30px verticalement check i:caption i,NomTouche$:top i,((i-1)*30):left i,10 next i
' ************************************************************** ' on positionne la souris au centre de l'écran, sur les checkbox ' **************************************************************
' 1- on indique le type d'évènement que l'on va envoyer à Windows ' dans ce cas un déplacement(move) avec des coordonnées en absolu (0 à 65535) dwFlags = BIN_OR(MOUSEEVENTF_ABSOLUTE,MOUSEEVENTF_MOVE) : ' mouvement en coordonnées absolues
' 2- Calcul des coordonnées de la souris : ' Axe des X : la moitié de l'écran + bordure du form 0 + left(checkbox) + moitié de la case à cocher. dx = (screen_x/2 )+BorderWidth+left(1)+8 : dx = int(dx * mouse_cX)
' Axe des Y : la moitié de l'écran + la hauteur de la barre de titre dy = (screen_y/2 )+TitleHeight+8 : dy = int(dy * mouse_cY)
' 3- Appel à la DLL : on indique que c'est un évènement de déplacement de la souris ' -> fonction mouse_event , paramètres: move,dx,dy r = dll_call5("mouse_event",dwFlags,dx,dy,dwData,dwExtraInfo)
wait 5000
' *************************************************************** ' Chenillard (désolé pour ceux qui n'ont pas de clavier avec led) ' *************************************************************** for i = 1 to 30
' l'instruction bin_and me permet de calculer un indice pour le tableau virtual_code. ' on garde seulement les 2 bits de poids faibles de la variable i ' le résultat de cette instruction va me renvoyer une valeur comprise entre 0 et 3. (voir codage binaire) indice = bin_and(i,3)
if (indice <> 0) : ' on ignore l'indice 0 qui n'est pas utilisé dans cet exemple.
' on simule le relachement (KEYEVENT_KEYUP) d'une touche du clavier (alternativement NUMLOCK, CAPSLOCK et SCROLLLOCK) r = dll_call4("keybd_event",virtual_code(indice),0,0,0) r = dll_call4("keybd_event",virtual_code(indice),0,KEYEVENT_KEYUP,0)
' puis on bouge le pointeur de la souris sur le checkbox correspondant à la touche : dwFlags = BIN_OR(MOUSEEVENTF_ABSOLUTE,MOUSEEVENTF_MOVE) : ' coordonnées absolues dy = (screen_y/2 )+TitleHeight+8+(30*(indice-1)) : dy = int(dy * mouse_cY) : ' pour dx voir calcul plus haut r = dll_call5("mouse_event",dwFlags,dx,dy,0,0)
' enfin on déclenche un clic gauche de la souris pour activer/désactivé le checkbox ' l'appui : dwFlags= bin_or(MOUSEEVENTF_ABSOLUTE, MOUSEEVENTF_LEFTDOWN) : r = dll_call5("mouse_event",dwFlags,0,0,0,0) ' le relachement du bouton : dwFlags= bin_or(MOUSEEVENTF_ABSOLUTE, MOUSEEVENTF_LEFTUP) : r = dll_call5("mouse_event",dwFlags,0,0,0,0)
wait 300
end_if next i
' *************************************************************** ' on restitue l'état initial du clavier ' sinon j'en connais qui vont hurler que j'ai foutu un merdier ' dans leur config de départ.. :) ' *************************************************************** for i=1 to 3 ' 1- Appel à la fct GetKeyState de la DLL : on récupère si la touche est active r=dll_call1("GetKeyState",virtual_code(i)) ' si l'état n'est pas le même qu'au départ, on simule l'appui sur cette touche if memStat(i)<>r r = dll_call4("keybd_event",virtual_code(i),0,0,0) r = dll_call4("keybd_event",virtual_code(i),0,KEYEVENT_KEYUP,0) end_if next i dll_off terminate Pour plus d'info sur les codes de gestion de la souris : voir iciPour les codes du clavier : iciC'est calme ce soir... tout le monde dors ou alors j'ai loupé un bon film à la TV ?
Dernière édition par Nardo26 le Jeu 7 Avr 2011 - 14:34, édité 2 fois (Raison : suppression de Stat(4), ajout de commentaires) | |
| | | Invité Invité
| Sujet: Re: DLL Mer 6 Avr 2011 - 23:17 | |
| Bonsoir Nardo, Quand je vois ce que tu fais, c'est fou ce que je me sens minable. Il y a vraiment un monde qui nous sépare. |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL Mer 6 Avr 2011 - 23:24 | |
| Bonsoir cosmos ! Ne te rabaisse pas tout le temps, tu as des idées géniales! La preuve : j'ai utilisé ton code pour déterminer la taille du titre de la fenêtre ! J'avais fais au départ si tu te souviens bien un truc beaucoup plus compliqué. (c'est d'ailleurs un pb chez moi : j'ai tendance à vouloir tout compliquer) Je me doutais bien que tu passerais par ici : la gestion du clavier est un domaine qui t'intéresse. non ? Regarde l'appel à GetKeyState pour connaitre l'état des touches Capslock et NumLock : cela pourrait peut être t'intéresser pour un éventuel éditeur. | |
| | | Invité Invité
| Sujet: Re: DLL Mer 6 Avr 2011 - 23:35 | |
| J'ai du mal de comprendre ce que tu fais, mais pour un peu vous auriez été tranquille avec moi. D’ailleurs je ne trouve plus le temps de programmer, et ce matin, (je peux le dire ici, vu que personne de mon entourage ne lit ce que je fais), en coupant un arbre, il y en a un autre qui était disons 10 mètres derrière moi, est tombé à 10 cm. Je n'ai rien senti, rien entendu, juste vu me froller. L'arbre était à coté parterre. Pourtant je prend du temps à regarder, et voir comment cela va se passer. Mince alors! je suis encore là |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL Mer 6 Avr 2011 - 23:45 | |
| Ben mince alors : Tu fais des trucs dangereux toi !!! on apprécie la vie après une peur pareille non ? Ca me fait penser qu'il faut que je m'occupe de tailler la haie de pyracantha : la dernière fois que je l'ai fais je me suis retrouvé en lambeaux. Une vraie cochonnerie ce truc là !!! ... Je suis pas pressé de m'y atteler... | |
| | | Invité Invité
| Sujet: Re: DLL Jeu 7 Avr 2011 - 5:06 | |
| La peur pas vraiment, surtout la surprise et l'injonction de me traiter de con.. J'ai appris depuis longtemps à gérer les problèmes, vu que depuis l'age de 15 ans, j'ai appris l'auto-hypnose (ce qui m'a certainement sauvé la vie il y a 3 ans). Passons!
Est-ce que quelqu'un connait une dll ou le moyen d'activer ou désactivé par programme la connexion au réseau local. Ça ça m’intéresse.
Bonne chance avec tes pyracanthe. |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: DLL Jeu 7 Avr 2011 - 14:33 | |
| Bonjour à tous ! Comme apparemment le source n'est pas clair pour tout le monde, j'ai modifié celui-ci et j'ai rajouté une palanqué de commentaire de partout. Si avec ça, vous n'arrivez toujours pas à comprendre, je ne peux plus rien faire pour vous ! @cosmos : pas encore trouvé de solution définitive pour activer/désactivé le réseau local. Mais j'ai un embryon de solution... Je coince sur l'installation d'une librairie dans delphi (je suis vraiment nul quand à la config de l'environnement delphi, je n'arrive pas à trouvé une doc papier et me taper la totalité des tutos du site du zero, j'ai pas trop le temps en ce moment) | |
| | | Invité Invité
| Sujet: Re: DLL Jeu 7 Avr 2011 - 15:42 | |
| Je te remercie Nardo. Pour ce qui est des explications, j'avoue que pour l'instant je ne regarde pas. Mais je relève tout. J'ai du mal à programmer en ce moment, j'ai trop de chose en tête ailleurs beaucoup plus important. Il y a des périodes où je me dois de relever le pied, et la programmation est un luxe. Donc pour plus tard.
Une chose me gène, je dois apporter des modifications à mon mode trace, et je ne peux pas le faire pour l'instant. Il y a une erreur sur les DIM à plusieurs indices. Si j'attend trop, le sujet sera verrouillé, et il sera trop tard
Si tu peux me faire une dll, c'est très bien. Je pensais que cela devait peut-être exister dans windows. Mais je n'aurais pas osé demander à quelqu'un de travailler pour moi.
Plus ça va, et plus je pense que ne connaitre que le basic pour programmer, c'est comme je pourrais dire marcher en étant aveugle. Je ne sais pas si un jour, on aura la possibilité de faire des dll en Panoramic. Je ne me souviens plus si Jack n'en avait pas parlé. Il y a des basics qui le permette, mais là franchement j'ai pas l'intention de demander celà à Jack. Il en a assez à faire. De plus je pense qu'il faut avoir une bonne documentation pour faire une dll avec les API de Windows. Je ne suis pas connaisseur, je ne sais me servir que du basic. J'en suis donc au niveau 1, peut-être 1+ avec mes idées qui ne manquent pas. |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: DLL Jeu 7 Avr 2011 - 16:13 | |
| @Cosmos Y a t'il moyen de faire des dll avec FBSL ou Liberty Basic ?
| |
| | | Invité Invité
| Sujet: Re: DLL Jeu 7 Avr 2011 - 18:45 | |
| @Minifly J'ai déjà du mal de Programmer en Panoramic. C'est déjà reprendre une de dizaine de fois dans une journée, 5mn par ci, 5mn par la pour pouvoir programmer. FBSL que j'avais commencé à voir, j'ai du arrété par manque de temps. Et en plus, j'ai eu le fin mot, j'ai compris "qu'on se foutait de ma gueule" entre membres par e-mail interposé, à ma demande d'explication. En plus, sur le forum français, ils ne peuvent pas répondre sans systématiquement mettre la traduction en anglais! Liberty Basic n'est pas gratuit, et je ne vais pas payer alors que je ne peux payer Panoramic, juste pour faire une dll. En réalité, la dll, c'est vraiment lorsqu'on ne peut faire autrement, et je rejoints Nardo, sur ce qu'il dit. Si il y a une dll pour faire une chose impossible en Panoramic, j'en profite. Mais pour faire une dll, il faut aussi être "fortiche" sur Windows, et moi je suis nul. Qu'en a apprendre une autre langage, je ne choisirais pas un basic, j'en ai déjà un, mais plutôt Delphi, dont j'avais commencé à apprendre (mais le temps que je n'ai pas ) Si un jour j'ai du temps devant moi, je reverrai tout cela. Mais franchement je trouve, en étant hors du circuit du travail, que vouloir faire des programmes qui n'apporteront pas grand chose une fois fini, ridicule pour moi de trop en vouloir. Normalement, ce qui est passionnant, c'est d'avoir des idées, de les essayer, et être content d'avoir réussi à faire une chose qu'on se croyait incapable. Ce qui m'est le plus pénible, c'est d'avoir idée sur idée, et être débordé pour les essayer. Je n'ai pas fini, et voila que je voudrai essayer autre chose. Quelle M....! 8 mn de perdu, j'ai un moteur qui m'attend. |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: DLL Jeu 7 Avr 2011 - 19:18 | |
| | |
| | | Invité Invité
| Sujet: Re: DLL Ven 8 Avr 2011 - 1:25 | |
| Mon moteur c'est ok. Si j'ai mis 8 mn de perdu, tu n'y ais pour rien. Personne ne m'oblige à venir voir le forum et intervenir. Peut-être que de ce côté là, je ne devrais pas répondre systématiquement, prendre une bonne inspiration, et aller voir ailleurs si j'y suis! Contrairement à ce que tu crois, j'apprécie ton intervention qui n'était qu'une information. Maintenant je fais un STOP, et j'arrête.
|
| | | Contenu sponsorisé
| Sujet: Re: DLL | |
| |
| | | | DLL | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |