FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
DLL Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
DLL Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
DLL Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
DLL Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
DLL Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
DLL Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
DLL Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
DLL Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
DLL Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
DLL Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
DLL Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
DLL Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
DLL Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
DLL Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
DLL Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -14%
Lave-linge hublot HOOVER HWP 10 kg (Induction, 1600 ...
Voir le deal
299.99 €

 

 DLL

Aller en bas 
3 participants
AuteurMessage
etamioreb




Nombre de messages : 14
Date d'inscription : 11/03/2011

DLL Empty
MessageSujet: DLL   DLL EmptyMar 5 Avr 2011 - 20:02

Bonjour, voici un lien http://centrewd.free.fr ou on peut tester les dll avec l'API windows
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 76
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyMar 5 Avr 2011 - 20:33

Merci pour 'info très bien.
Revenir en haut Aller en bas
etamioreb




Nombre de messages : 14
Date d'inscription : 11/03/2011

DLL Empty
MessageSujet: capture ecran   DLL EmptyMer 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
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyMer 6 Avr 2011 - 11:59

bonjour etamioreb,
C'est vrai que c'est simple pour faire une capture d'écran... Smile


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
geek

[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... Wink

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyMer 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 Sad
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 ici
Pour les codes du clavier : ici

C'est calme ce soir... tout le monde dors ou alors j'ai loupé un bon film à la TV ? Question


Dernière édition par Nardo26 le Jeu 7 Avr 2011 - 14:34, édité 2 fois (Raison : suppression de Stat(4), ajout de commentaires)
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




DLL Empty
MessageSujet: Re: DLL   DLL EmptyMer 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.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyMer 6 Avr 2011 - 23:24

Bonsoir cosmos ! Smile
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)
Wink

Je me doutais bien que tu passerais par ici : la gestion du clavier est un domaine qui t'intéresse. non ? Wink
Regarde l'appel à GetKeyState pour connaitre l'état des touches Capslock et NumLock : cela pourrait peut être t'intéresser pour un éventuel éditeur.
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




DLL Empty
MessageSujet: Re: DLL   DLL EmptyMer 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à
Very Happy
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyMer 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 ? Smile

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... Wink

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




DLL Empty
MessageSujet: Re: DLL   DLL EmptyJeu 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.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyJeu 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 ! Smile


@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)

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




DLL Empty
MessageSujet: Re: DLL   DLL EmptyJeu 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.
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 76
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyJeu 7 Avr 2011 - 16:13

@Cosmos
Y a t'il moyen de faire des dll avec FBSL ou Liberty Basic ?
Revenir en haut Aller en bas
Invité
Invité




DLL Empty
MessageSujet: Re: DLL   DLL EmptyJeu 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 pale )

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.
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 76
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

DLL Empty
MessageSujet: Re: DLL   DLL EmptyJeu 7 Avr 2011 - 19:18

Bon moteur
Revenir en haut Aller en bas
Invité
Invité




DLL Empty
MessageSujet: Re: DLL   DLL EmptyVen 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.
Revenir en haut Aller en bas
Contenu sponsorisé





DLL Empty
MessageSujet: Re: DLL   DLL Empty

Revenir en haut Aller en bas
 
DLL
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: