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.
Quelques  fonctions de la user32.dll Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Quelques  fonctions de la user32.dll Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Quelques  fonctions de la user32.dll Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Quelques  fonctions de la user32.dll Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Quelques  fonctions de la user32.dll Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Quelques  fonctions de la user32.dll Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Quelques  fonctions de la user32.dll Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Quelques  fonctions de la user32.dll Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Quelques  fonctions de la user32.dll Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Quelques  fonctions de la user32.dll Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Quelques  fonctions de la user32.dll Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Quelques  fonctions de la user32.dll Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Quelques  fonctions de la user32.dll Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Quelques  fonctions de la user32.dll Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Quelques  fonctions de la user32.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 : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Quelques fonctions de la user32.dll

Aller en bas 
4 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques  fonctions de la user32.dll Empty
MessageSujet: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 5:24

Laughing Salut tout le monde  Laughing 

Si vous voulez perdre votre temps, si vous n'avez rien de mieux à faire, CLIQUEZ ICI  (vous êtes prévenus!   :
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 7:29

Super boulot, j'achète !! Juste une petite remarque pour la compréhension: Pour la dernière fonction: IsWindowVisible, tu mets que c'est pour savoir si une fenêtre est visible ou non. Après tu fais le test sur un bouton masqué ou non et du coup l'exemple n'est pas très clair. En fait c'est par ce que les boutons utilisent une fenêtre au sens Windows, mais je pense qu'il faudrait l'expliquer car moi si Klaus (je crois) ne l'avait pas expliqué un jour, je ne suis pas sûr que j'aurais fait le rapprochement entre les boutons (ou autres objets) et les fenêtres. Je pense que je n'aurais pas était le seul...
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 8:47

Bonjour à tous,  Smile 
J'ai étudié il y a quelques mois certaines fonctions de user32.dll. Papydall me donne la solution pour certaines fonctions que je n'avais pas saisies.
Maintenant, je veux aussi apporter ma petite contribution:
1°) convertir code ascII majuscule en code ascII minuscule et vice versa, tout est dans le mémo du caractère chr$(0) à chr$(255). C'est bien du code 65 au 122 et du 192 au 255.
Code:
' convertir code ascII majuscule en code ascII minuscule et vice versa
dim res%,i$,char%
memo 1:full_space 1:bar_vertical 1:print_target_is 1
dll_on "user32.dll"
for char%=0 to 255
  res%=dll_call1("CharLowerA",char%)
   i$="code majuscule= "+str$(char%)+" ==> code minuscule= "+str$(res%)+"  ||  "
  res%=dll_call1("CharUpperA",char%)
   i$=i$+"code minuscule= "+str$(char%)+" ==> code majuscule= "+str$(res%)
print i$
next char%
dll_off
end
2°) connaître la longueur du caption de la fenêtre. Je sais qu'on peut l'avoir en panoramic pur avec len(caption$(0)).
Code:
' longueur du caption de la fenêtre
dim res%,hnd%
hnd%=handle(0)
dll_on "user32.dll"

   caption 0,"COUCOU"
   res%=dll_call1("GetWindowTextLengthA",hnd%)
   message res%

   caption 0,"PANORAMIC"
   res%=dll_call1("GetWindowTextLengthA",hnd%)
   message res%

dll_off
end
et un 3°) que je trouve très intéressant: faire flasher une fenêtre window:
Code:
' faire clignoter la fenêtre
label flash
dim res%,hnd%
hnd%=handle(0)
button 1:caption 1,"Flash window":on_click 1,flash
button 2:caption 2," Stop Flash ":left 2, width(1)+10
dll_on "user32.dll"
end

flash:
off_click 1
repeat
  res%=dll_call2("FlashWindow",hnd%,1)
  wait 250
until clicked(2)=1
on_click 1,flash
return
Voilà, à+  Wink  Wink  Wink
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 13:21

Bonjour tout le monde.

Je vois qu’il y a de la visite sur ce post, bien que j ‘ai prévenu que c’est  … bon à savoir !

Jicehel a écrit:
Super boulot, j'achète !! Juste une petite remarque pour la compréhension: Pour la dernière fonction: IsWindowVisible, tu mets que c'est pour savoir si une fenêtre est visible ou non. Après tu fais le test sur un bouton masqué ou non et du coup l'exemple n'est pas très clair. En fait c'est par ce que les boutons utilisent une fenêtre au sens Windows, mais je pense qu'il faudrait l'expliquer car moi si Klaus (je crois) ne l'avait pas expliqué un jour, je ne suis pas sûr que j'aurais fait le rapprochement entre les boutons (ou autres objets) et les fenêtres. Je pense que je n'aurais pas était le seul...

Les boutons n’utilisent pas une fenêtre au sens Windows
Les boutons et tous les autres objets sont des FENETRES au sens Windows.
FORM, BUTTON, ALPHA, EDIT, COMBO, TIMER, etc .. sont des fenêtres au sens Windows !

Dans le code posté ci-haut, j’ai indiqué qu’un bouton (par exemple) est une fenêtre pour Windows.

Un autre exemple de FlashWindow

Code:

rem ============================================================================
rem  Faire clignoter la barre de menu de la fenêtre
rem ============================================================================
dim ret%, hwnd%,i%,oui%
form 10 : top 10,150 : left 10,100 : caption 10,"Je clignote !"
color 10,0,255,255
hwnd% = handle(10)
oui% = 1 : ' = 0 --> ne pas clignoter , non 0 --> clignoter
dll_on "user32.dll"
for i% = 1 to 50
    ret% = dll_call2("FlashWindow",hwnd%,oui%) : wait 50
next i%
dll_off
caption 10,"Je ne clignote plus !"
rem ============================================================================

Certains API demandent comme paramètre une structure, Or sous PANORAMIC, il n’est pas possible de définir de tels types.
Voici le problème :
Comme exemple, je prends la fonction GetCursorPos de la user32.dll qui retourne la position du curseur :  les coordonnées sont renvoyées sous forme d’une structure POINTAPI définie comme ceci :

Type POINTAPI
         X : entier long
         Y : entier long
End Type
L’appel de la fonction se fait comme ceci :
Ret% = dll_call1(« GetCursorPos »,paramètre de type POINTAPI)

Ma question : quelqu’un a -t-il une idée pour faire ça en Panoramic ?
J’ai tenté de passer deux paramètres X et Y par leur adresse mais ça a échoué.

En VB
Code:

 Private Declare Function GetCursorPos Lib "user32" ( _
     lpPoint As POINTAPI) As Long

Private Type POINTAPI
    X As Long
    Y as Long
End Type

Dim Tampon As POINTAPI
GetCursorPos Tampon
' La position du curseur se trouve dans :
' Tampon.X et Tampon.Y
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 19:20

Voici comment on fait. La réponse est dans les commentaires du code ci-dessous:
Code:

' Private Declare Function GetCursorPos Lib "user32" ( _
'    lpPoint As POINTAPI) As Long
'
' Private Type POINTAPI
'    X As Long
'    Y as Long
' End Type
'
' Dim Tampon As POINTAPI
' GetCursorPos Tampon
'  La position du curseur se trouve dans :
'  Tampon.X et Tampon.Y
'
' pour simuler cela, on n'a pas d'autre moyen que de passer une chaîne
' de caractères de 2*n octets. Extrait de la doc Visual Basic:
'    Holds signed 64-bit (8-byte) integers ranging in value
'    from -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807
'    (9.2...E+18)
' Donc, pour un système 64 bits en mode natif, il faut 2*8 octets.
' Pour un système 32 bits, il faut 2*4 octets.
'
' Le premier octet de la chaîne contient l'octet de poids le plus faible
' de la valeur entière, etc. Voici le schéma pour un système 32 bits:
'  | x0..7 | x8..15 | x16..23 | x24..31 | y0..7 | y8..15 | y16..23 | y24..31 |
' On peut y arriver avec une simple procédure qui masque, en boucle,
' les 4 fois 8 bits de chaque entier par BIN_AND, puis shift à droite
' pour produire un résultat entre 0 et 255, puis attacher chr$(code caracère)
' à la chaîne résultante.
'
' Ensuite, il ne reste plus qu'à passer adr(chaine$) à
' dll_call1("SetCursorPos",adr(chaine$)).
'
' Pour GetCursorPos, suivre la procédure inverse: définir une chaîne de
' 8 caractères par string$(8,"x") ou string$(8,chr$(0)), passer cette adresse
' à dll_call1("GetCursorPos",adr(chaine$)). Ensuite, décoder ma chaîne
' caractère par caractère, pour reconstruire des deux valeurs entières.
'
' KGF_SUB contient des procédures gérant cela de façon beaucoup plus élégante.
' Regarde la rubrique "Gestion des fichiers binaires".
' La ligne "Définition d'un enregistrement", il y a la documentation
' des quelques procédures contenues dans KGF_SUB.bas pour définir et créer
' un enregistrement binaire. C'est exactement ce qu'il faut ici, avec
' deux champs I4. Puis, il y a les fonctions CopyBinaryStringToRecord
' et CopyRecordToBinaryString pour la manipulation de ces objets.

' A titre d'exemple, voici comment on définit un tel record:
dim X%, Y%            : ' les deux variables pour la fonction DLL
dim res%, a8$
define_record(2)      : ' définir un champ de 2 enregistrements
add_integer_field(adr(X%))      : ' ajouter un champ I4
add_integer_field(adr(Y%))      : ' ajouter un champ I4
build_record()                  : ' construire le record

' récupérer la position du curseur:
a8$ = string$(8,"x")                        : ' réserver l'espace
res% = dll_call1("GetCursorPos",adr(a8$))    : ' appeler la DLL
CopyBinaryStringToRecord(a8$)                : ' décoder le résultat
message "X="+str$(X%)+"  Y="+str$(Y%)

' forcer la position du curseur:
X% = 210
Y% = 180
a8$ = string$(8,"x")                        : ' réserver l'espace
CopyRecordToBinaryString(a8$)                : ' charger le record
res% = dll_call1("SetCursorPos",adr(a8$))    : ' appeler la DLL

#INCLUDE "KGF_SUB.bas"

' les procédures de définition du record fonctionnent sans KGF.dll.
' Elles sont 100% Panoramic et entièrement contenues dans KGF_SUB.bas.
' Par contre, les procédures CopyBinaryStringToRecord et CopyRecordToBinaryString
' font appel à une fonction de KGF.dll. Il faut donc jongler avec les DLLs,
' ou mieux, utiliser les fonctions de chargement dynamique d DLLs dans KGF.dll
' pour charger USER32.dll, à l'insu de Panoramic.

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 19:35

Bravo Klaus.
Je verrais ça tout à l'heure en détail.
Merci et à +
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 23:14

Éclaircissement:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 23:46

Serieux là Papydall, tu as vraiment tout pour faire un bon article.
Un peu de théorie sur l'usage des DLL Windows + Explications + Vocabulaire
Mise en pratique avec quelques fonctions simples puis avec des fonction plus complexes (avec l'explication fournie par Klaus pour simuler les structures et la mise en pratique dans un petit code "simple")
Qu'en penses-tu ?
En plus ça permettrait de garder une trace de ce travail et que les futurs utilisateurs de Panoramic le retrouvent facilement.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyDim 11 Mai 2014 - 23:53

Bin woui, moi aussi j'apprends.
Pour l'article pourquoi pas, quand je dompterai mieux la bête!  Laughing 
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll EmptyLun 12 Mai 2014 - 7:50

OK, je n'avais pas remarqué que tu ne l'avais pas dompté .... Wink
Revenir en haut Aller en bas
Contenu sponsorisé





Quelques  fonctions de la user32.dll Empty
MessageSujet: Re: Quelques fonctions de la user32.dll   Quelques  fonctions de la user32.dll Empty

Revenir en haut Aller en bas
 
Quelques fonctions de la user32.dll
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Quelques éclaircissements...
» quelques ajouts
» Quelques améliorations...
» Quelques nouvelles ...
» Quelques informations sur votre PC:

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: