Franchement Jacques...
http://lmgtfy.com/?q=%26H1000
et c'est pas une liste de fonction API mais de constantes donc vous parlez... postée par un utilisateur...
Version imprimable
Franchement Jacques...
http://lmgtfy.com/?q=%26H1000
et c'est pas une liste de fonction API mais de constantes donc vous parlez... postée par un utilisateur...
le préfixe &H indique une notation hexadécimale, c'est la même chose que le préfixe 0x utilisé en C/C++ et dans WinDev.Citation:
SPI_GETACTIVEWINDOWTRACKING = &H1000
La notation hexadécimale est très souvent utilisée dans le nom des constantes utilisées comme paramètre des API.
&H est surtout utilisé en VB et en PowerBASIC.
...
Fabrice est très certainement compétent dans son domaine, mais ne vous avisez pas de lui donner un conseil.Citation:
=ça me fait étrangement penser au service wxshooroom que propose Fabrice Hariri
et qui ne veut pas comprendre malgré les remarques que son site est bancal et désuet (pour rester poli).
Il a une très haute opinion de lui-même et détient la vérité, même dans un domaine qu'il ne maitrise visiblement pas.
C'est ainsi.
Un site, donc, totalement minitelesque, mais dont il est persuadé de la qualité.
J'ai pensé un temps à lui dire, et puis vu ses réactions j'ai laissé tombé, d'autant que je ne suis pas
persuadé de l'utilité de ce splendide showroom (rien que le nom m'amuse)
A part ça, il aide dès qu'il peut sur le forum de PCS et avec compétence.
Bonjour Michel et les autres,
Comme d'habitude, je souhaite un exemple d'utilisation.
Merci de me le fournir si tu peux.
Je sais que je suis par nature un peu lent.
Je pense cependant avoir un fond de robustesse.
Donc pour rappel, voici les codes pour lire et écrire les paramètres souris.
Peux-tu me l'adapter pour établir la largeur et hauteur du caret, pour les malvoyants comme moi.
La valeur du paramètre (constante) est deCode:
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
31
32
33
34
35
36 RetourFonction=API("USER32","SystemParametersInfoA", uiaction, uiParam,pvParam,fWinIni) Zone_de_résultats = "UIParam = " + uiparam + cr + "UIAction (correspond à une constante définissant une action) = " + uiaction + cr + pvparam + cr + fwinini + cr + "Mon_résultat = " + nrésultat Le résultat affiché est 7 : UIParam = 0 UIAction (correspond à une constante définissant une action) = 94 40252860 0 Mon_résultat = 7 et ... Zone_de_résultats = "" RetourFonction est un booléen // Type C :BOOL uiAction est un entier sans signe // Type C :UINT uiParam est un entier sans signe // Type C :UINT pvParam est un entier système // Type C :PVOID fWinIni est un entier sans signe // Type C :UINT nRésultat est un entier uiParam = 16 uiAction = 0x005D // Action demandée ici 12 traces de souris fWinIni = 1 RetourFonction=API("USER32","SystemParametersInfoA", uiaction, uiParam,pvParam,fWinIni) Zone_de_résultats = "Retour de fonction = " + retourfonction + cr + "UIAction (correspond à une constante définissant une action) = " + uiaction + cr + pvparam + cr + fwinini + cr + "Mon_résultat = " + UIParam donne : Retour de fonction = 1 UIAction (correspond à une constante définissant une action) = 93 0 1 Mon_résultat = 16
SPI_GETCARETWIDTH = &H2006
SPI_SETCARETWIDTH = &H2007
Merci,
Cordialement
Bonjour,
Vous avez gagnez... j'ai failli à ma parole... j'ai répondu une fois encore... j'espère que j'arriverais à me contenir la prochaine fois... mais là, vous discréditez inconsciemment ou pas quelque part l'aide de la msdn....
Si je lis simplement l'aide de la MSDN :
Donc en expérimentant (un morceau de code que je vous ai fourni), j'ai vu que ce chiffre varié bien de 1 à 20.Citation:
SPI_GETMOUSESPEED
0x0070
Retrieves the current mouse speed. The mouse speed determines how far the pointer will move based on the distance the mouse moves. The pvParam parameter must point to an integer that receives a value which ranges between 1 (slowest) and 20 (fastest). A value of 10 is the default. The value can be set by an end-user using the mouse control panel application or by an application using SPI_SETMOUSESPEED.
c'est tout à fait le genre de remarque je vous ai souligné tout le long de mes réponses....
Je suis comme vous, je lis mais je prends le temps d'analyser avant de formuler des arguments ou autres...
A AUCUN ENDROIT DANS L'AIDE ON PASSE D'UNE NOTATION A UNE AUTRE....
En tant que journaliste et personne ayant certainement plus de compétence que moi en PAO et autres, un document comme une aide répond à un certain canevas.
On retrouve donc une mise en page "type" afin d'aider le lecteur à retrouver aisément ses repères quelque soit le mot chercher. Bref, on fait de l'ergonomie.
Vous remarquez que l'aide de la MSDN et même celle de PCSOFT répond à ces postulats.
Et si vous prenez le temps de LIRE, vous verrez qu'en fin de page (PCSOFT ou MSDN ou autres...) Souvent les éditeurs laisse la possibilité aux lecteurs de rajouter des commentaires....
Donc généralement un commentaire est identifiable par une typographie différente, une mention (justement pour éviter les confusions avec l'éditeur) de la personne qui écrit ce commentaire. Et comme les commentaires ne sont pas forcément modérés, on peut trouver de tout.
Et si une personne s'amuse comme il le dit à faire des copier/coller des valeurs des constantes trouver sur le net.... il a pu copier/coller ces valeurs provenant de différents site donc de notation différentes.
A vous de faire le tri donc entre :
- l'aide officielle
- les commentaires des utilisateurs
Enfin pour répondre à votre question, si vous l'accepter comme réponse, l'analogie est la même avec Windev, en quoi écrire une condition en anglais diffère de l'écriture en français ?
IF ... ELSE ... END
Si ... SINON ... FIN
Est-ce que fonctionnellement cela change quelque chose ?
Par contre est-ce que visuellement cela vous dérange ?
Si oui, prenait la notation qui vous plait le plus.
Si non, je ne pense pas que vous puissiez imposer à la communauté une notation plutôt qu'une autre...
Et enfin le consensus fait que l'on passe souvent par des constante afin de garder une aide fonctionnelle quand à la lecture du code sans avoir besoin de recourir à un document. Dans 1 an, quand vous relirez le code, il sera plus facile pour vous de comprendre :
"info(SPI_GETMOUSESPEED)" que "info(112)"
Personnellement je ne converti pas en décimal uniquement pour me rappeler que ce chiffre ne vient pas de Windev, car naturellement quand je vois dans du code windev 0x... je sais que j'ai dû récupérer cette valeur grace à google... Et donc je me pose moins de question quant à sa définition, je sais instinctivement que je dois rechercher cela sur internet et non dans l'aide PCSOFT.
Cordialement.
PS : et je me répète mais je ne suis pas un GURU des API, je suis un dev. 100% WLangage, mais j’essaie en toutes circonstances d'analyser ce que je lis pour en comprendre la signification. Et Google ou autre est un formidable outil pour nous autodidacte.
Bonjour,
Ces échanges prouvent que de débats ou disputes jaillissent des vérités.
Tout d'abord l'API 0x0070 soit 112 en lecture et 0x0071 ou 113 en écriture, fournissent ou établissent des valleurs précises.
Soit la MSDN se trompe, soit les API posent un problème.
En effet en lançant l'API et les vérification qui vont derrière, soit lecture, écriture, relecture, j'observe que si je mets une valeur de vitesse de souris à 20 et que je relis, elle est à nouveau à 16.
Comment expliquez-vous cela ?
Cordialement
Bon allez je m'y colle ^^
Si j'envoie 20 en valeur, j'ai bien 20 quand je relis la valeur. [WD18 en 32 bits]
Microsoft ne se trompe pas et cette fonction de l'API Win32 fonctionne correctement. Le contraire m'aurait légèrement étonné.
Pour tester :Code:
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 CONSTANTE SPI_GETMOUSESPEED = 0x0070 SPI_SETMOUSESPEED = 0x0071 FIN cMouse est une Classe FIN PROCEDURE Constructeur() PROCEDURE Destructeur() PROCEDURE GLOBAL _getMouseSpeed() vitesse est un entier sans signe sur 4 octets res est un booléen = API("USER32", "SystemParametersInfoA", SPI_GETMOUSESPEED, 0, &vitesse, 0) SI res = 0 ALORS Erreur("Erreur lors de l'appel à _getMouseSpeed") FIN RENVOYER vitesse PROCEDURE GLOBAL _setMouseSpeed(vitesse est un entier sans signe sur 4 octets) res est un booléen = API("USER32", "SystemParametersInfoA", SPI_SETMOUSESPEED, 0, vitesse, 0) SI res = 0 ALORS Erreur("Erreur lors de l'appel à _setMouseSpeed") FIN
Résultat :Code:
1
2
3
4
5
6
7 Trace(cMouse._getMouseSpeed()) cMouse._setMouseSpeed(1) Trace(cMouse._getMouseSpeed()) cMouse._setMouseSpeed(20) Trace(cMouse._getMouseSpeed()) cMouse._setMouseSpeed(10) Trace(cMouse._getMouseSpeed())
Code:
1
2
3
4 10 1 20 10
Bonjour,
Voici qui est intéressant.
De mon côté avec le code Windev :
Si j'entre une valeur supérieure à 16, je peux vérifier par un nouvel appel à l'API 112 et j'obtiens.
J'écris une vitesse de 8. Je la relis et j'obtiens 8.Code:
1
2
3
4
5
6
7
8
9
10
11
12 Zone_de_résultats = "" RetourFonction est un booléen // Type C :BOOL uiAction est un entier sans signe // Type C :UINT uiParam est un entier sans signe // Type C :UINT pvParam est un entier système // Type C :PVOID fWinIni est un entier sans signe // Type C :UINT nRésultat est un entier uiParam = 8 uiAction = 113 // Action demandée ici mettre la vitesse de la souris à 8 fWinIni = 1
Si maintenant j'écris au delà de 16, alors je relis toujours à 16.
Pièce jointe 147001
Une simple hypothèse :
20 en hexadécimal = 32 en décimal.
Sinon pourquoi écrire un byte (un mot) dont la valeur maxi ne soit ni 16 ni 32 ?
Je m'interroge.
N'oublions pas que la doc Microsoft a parfois été mal traduite ou insuffisamment documentée.
Je suis donc curieux du pourquoi ?
Peut-être doit-on afficher un paramètre donnant la longueur de la chaîne à récupérer ?
Cordialement
Bonjour,
Autant pour moi, je reconnais mon erreur.
J'arrive désormais à obtenir une valeur de vitesse de souris de 1 à 20.
Voici le code simplifié :
Et l'illustrations qui le prouve.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 //Ecriture puis lecture d'une valeur de vitesse de souris Zone_de_résultats = "" RetourFonction est un booléen // Type C :BOOL uiAction est un entier sans signe // Type C :UINT uiParam est un entier sans signe // Type C :UINT pvParam est un entier système // Type C :PVOID fWinIni est un entier sans signe // Type C :UINT nRésultat est un entier uiParam = 0 uiAction = 113 // Action demandée ici écrire la vitesse de la souris fWinIni = 1 pvparam = 10 RetourFonction=API("USER32","SystemParametersInfoA", uiaction, uiParam,pvParam,fWinIni) uiParam = 0 uiAction = 112 // Action demandée ici écrire la vitesse de la souris fWinIni = 0 pvparam = &nrésultat RetourFonction=API("USER32","SystemParametersInfoA", uiaction, uiParam,pvParam,fWinIni) info("La vitesse de la souris est de : " + nrésultat + "/ 20 possible")
Merci à ceux qui m'ont aidé, en particulier DelphiManiac, Hibernatus, RY_YO, Serendib, Patrice Terrier, fffttt, Nullosse qui m'a poussé à tout relire, jurassic pork, michel.souris, WDKyle, en attendant la participation des autres.
Cordialement,
Pièce jointe 147140
Bonjour,
J'ai tenté de comprendre mes erreurs précédentes.
Pour lire la valeur des paramètres vitesse et nb de traces de la souris, on utilise le paramètre pvparam, en lecture.
Pour déterminer ces valeurs on utilisera tantôt pvparam pour établir la vitesse,
et uiparam pour établir le nombre de traces.
Voir :
http://msdn.microsoft.com/en-us/libr...%29.aspx#Input
To enable the feature, set uiParam to a value greater than 1 to indicate the number of cursors drawn in the trail.
et au contraire :
Sets the current mouse speed. The pvParam parameter is an integer between 1 (slowest) and 20 (fastest). A value of 10 is the default. This value is typically set using the mouse control panel application.
J'ai naïvement pensé que le mécanisme restait le même. Présumer sans lire assez = péché mortel.
Mea culpa.
Cordialement
Bonjour,
Je modifie la largeur de mon caret, passant par exemple de 8 (gros) à 64.
Pièce jointe 147166
Un caret de 64 !!!
Cela me donne une monstruosité dont l'avantage est de vérifier que la modif est bien prise en compte.
Malheureusement cette modif ne s'affiche que dans Windev et dans Firefox et non pas dans Word...
Quelqu'un a-t-il une idée ?
Quand je modifie la trace de la souris pour la mettre à 16 (très longue) cela apparait directement sous Word et Excel.
Alors pourquoi le traitement du caret agit-il différemment ?
Cordialement
Bonjour,
Dans ce sondage, j'observe d'un côté un grand succès médiatique, 1800 visites en 10 jours. Et aussi des frottements.
Parmi mes mécontentements, le fait que des questions restent sans réponse.
Par exemple pourquoi parfois j'observe dans la doc des API une notation 0x0071
et à d'autres moments h2007 ?
Personne ne répond sauf à me dire que le h signifie hexadécimal. Ce dont je me doute.
La réponse est la suivante : c'est équivalent. Les deux notations sont les mêmes, en termes de résultats.
Pourquoi personne ne m'a-t-il pas dit cela ?
Au titre des bonnes surprises, Delphimaniac qui me donne envie de bricoler les 'constructeurs' et 'destructeurs'.
A votre tour de participer en m'envoyant vos meilleures API.
Cordialement
Jacques, merci de relire attentivement le post Ry_Yo du 26/05/2014 à 14h42....
Pour ma part j'ai pensé que vous comprendriez (péché mortel me direz vous mais je m'en cogne je crois pas en Dieu) qu'une valeur hexadécimal avait la même valeur qu'une valeur hexadécimal quel qu'en fut sa notation...
Bonjour,
La question que je me pose est pourquoi la doc Microsoft, après la valeur 115, continue soudain et comme de façon naturelle, en mélangeant décimal, format 0x0071 et h2007 ?
Y-a-t-il une raison à ces changements soudain ?
Voilà qui m'intéresse parce que je cherche, sans la trouver, une signification à ce phénomène.
Je doute qu'il s'agisse seulement d'un changement d'équipe, chacun apportant son style personnel.
Cordialement
Bien ceci ne soit pas d'un grand intérêt je vais vous répondre (d'ailleurs vous n'avez toujours pas lu attentivement la réponse de Ry_Yo).
A aucun endroit dans la doc OFFICIELLE de MSDN vous trouverez un changement de notation (j'entends au sein de la même énumération). La seule énumération mixte que j'ai vu est celle postée par un utilisateur (section de commentaire en bas de page) dans la page d'aide de la fonction SystemParametersInfoA qui vous est si chère. Cela est peut-être du à un copier/coller depuis un logiciel qui aurait converti les valeurs hexadécimales (ça n'est qu'une supputation).
Discuteriez-vous de littérature avec un analphabète ?
Non, vous lui en parleriez seulement.
Si vous tombez sur une notation hexa différente, c'est probablement parce que vous alternez entre des docs destinées au VB et des docs destinées au C, ou bien vous lisez carrément les commentaires utilisateurs des pages MSDN, qui n'ont rien d'officiel.
Ce n'est pas à nous de lire les docs et de vous les traduire. Apprenez à les lire correctement, ou bien laissez tomber. Il y a ici des gens qui gagnent leur vie avec ce métier et qui ne sont pas là pour se distraire comme vous le faites. Nous ne sommes pas à la retraite, nous.
Bonjour,
Quelques minutes après avoir posté, le texte est déjà sur Google !!!
Utilisez-vous les API Windows et de quelle façon ? - Page 4 ...
www.developpez.net › ... › Environnements de développement › WinDev
Il y a 2 jours - Envoyer un message via MSN à michel.souris. Par défaut. Franchement Jacques... http://lmgtfy.com/?q=%26H1000 et c'est pas une liste de fonction API mais de constantes donc vous ..... et à d'autres moments h2007 ?
Impressionnant, non ?
Cordialement
Ce n'est pas seulement impressionnant, c'est carrément passionnant.
Dites-en-nous un peu plus à ce sujet, s'il vous plaît.
Merci d'avance.
Il a vraiment que ça a foutre.... vivement la retraite que je m'éclate avec google !!!!
En fait il se fout de nous depuis le début... c'est une performance artistique !