Y a t'il autre chose que GetAsyncKeyState ou GetKeyState pour conaitre l'action

Résolu
rebixav Messages postés 130 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 28 janvier 2013 - 8 nov. 2012 à 17:55
rebixav Messages postés 130 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 28 janvier 2013 - 9 nov. 2012 à 10:27
Bonjours à tous !
Avant tout sachez que je ne pose pas pour rien c'est trés sérieux(j'ai bien chercher partout sur internet avant),... aiiii pas la ^tete
J'uilise déja GetAsyncKeyState, marche trés bien, heuuu,.. en faite non (99%)

il y a ce 1% qui me gêne particulièrement !

je m’explique :
lorque vous mettez dans un timer :

For i% = 0 To 255
If GetAsyncKeyState(i%) < 0 Then Text1 = i%
next i%

Alors je récupère facilement qu'elle touche est enfoncé ! (pas relâché mais c'est pas grave)

le soucie c'est que cela marche partout dans votre form, dans les autres form, ou explorateur windows, etc... SAUF A UN ENDROIT !!! MON FAMEUX 1%

cet endroit vous pouvez l'essayer en 4 clic de vb6(timer à 10ms et coller le for i%)
et vous verrez que VOUS N'AVEZ PAS DE SUITE L'INFORMATION lorsque vous cliquez sur le haut de la barre de titre de votre FORM (en haut sur la barre normallement bleu foncé sous XP) !
Il y a comme une grosse seconde sans aucun retour de l'API positif !!!???
en faite je vais être même plus précie :
- réagi de Suite lorsque je clique au centre du poste de travail
- réagi de Suite lorsque je clique sur la barre de titre de la form du poste de travail
- NE réagi PAS de Suite lorsque je clique sur la barre de titre de ma FORM qui à le text1
- NE réagi PAS de Suite lorsque je clique sur la barre de titre d'une autre FORM de mon même
logiciel (même en .exe)
- réagi de Suite lorsque je clique au centre de ma forme, ou sur text1

Moi j'avoue que cela me gêne un peu beaucoup, et je ne vois pas quoi faire à par trouver autre chose que ces deux API

mais cela fait deux heures que je cherche en vain, c'est bizarre,...

je pense même que ma manie dêtre perfectioniste dme conduiré vers une véritable gestion de souris avec 5 boutons !!! .... mais là je bloque

please...

4 réponses

rebixav Messages postés 130 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 28 janvier 2013
9 nov. 2012 à 10:27
C'est bon je l'ai, j'ai trouvé !!!
...
il faut toujours utilissé GetAsyncKeyState, mais en plus il faut ce faire aider
par =>>> "GetKeyboardState"
son utilité était un peu subtil, mais au moins il fonctionne partout !
en faite lorsque vous cliquez sur le bouton 1 de la souris(en exemple) Windows va mettre dans un tableau un etat ON, puis Off au prochain clic, puis ON, puis OFF ...ETC.
et j'ai remarqué que dans le tableau byte de GetKeyboardState à la position 1 (<<< le bouton 1 de la souris, 2 pour le 2 et 4 pour le bouton du milieu)
réagie de suite d'un ON vers un OFF même sur la barre de menue en haut !
donc problème résolue, il ne reste plus qu'à travaillé la chose
donc aprés un petit algorithme qui suit tout cela, roule ma poule cela marche très bien !
je ne vais pas vous mettre mon enorme procédure qui s'occupe de tout cela, mais une bref utilisation de GetKeyboardState :

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Dim kbArray As KeyboardBytes
GetKeyboardState kbArray
'et là vous avez dans un tableau de 0 à 255 les touches qui deviennent ON ou OFF !
' ex: kbArray.kbByte(1)=0 ou =1

je suis trop content,...
moi je pense qu'il n'y as pas de problème, il n'y a que des solutions, mais il faut les trouver, c'est pas toujours simple !
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 nov. 2012 à 18:08
Bonjour,
A ma connaissance, windows gère prioritairement les actions sur la barre de titre d'une fenêtre (ne serait-ce que pour assurer les déplacements). Je ne crois donc pas que tu puisses intercepter (du moins depuis VB6) un clic (un mousedown, en fait) en cet endroit-là !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
rebixav Messages postés 130 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 28 janvier 2013
8 nov. 2012 à 18:23
Non pareil avec le mousedown, cela ne change rien, je serais surpris qu'il y est rien, et comme je l'ais dit, en plus si je veut conaitre l'action sur le bouton 5 ?!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 nov. 2012 à 18:32
Non pareil avec le mousedown, cela ne change rien,

Oui ? Et c'est bien ce que je t'ai dit :
Je ne crois donc pas que tu puisses intercepter (du moins depuis VB6) un clic (un mousedown, en fait) en cet endroit-là !


Tu ne peux intercepter de mousedown en cet endroit avant Windows (et donc encore moins le clic)
je serais surpris qu'il y estait rien

Et moi : que tu puisses ôter sa priorité à Windows depuis VB6
Bonne chance.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous