Raccourci avec les hooks

Signaler
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008
-
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008
-
Je sait qu'il y a déjà des messages qui y ressemble mais je n'arrive pas à modifier les sources comme je voudrait. J'aimerais faire un prog avec des raccourcis clavier du style Ctrl+A avec les hooks mais je n'arrive pas à définir 2 touches... Aide-moi BruNews le boss des hooks :blush) ;) !

8.:Dominion:.8

10 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
pourquoi fais-tu un hook pour ctrl+A, faisable mais LoadAccelerators() ne conviendrait-il pas ?
sinon va falloir fournir details du contexte applicatif.
BruNews, ciao...
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Heu le problème c'est que j'ai jamais entendu parler de cette fonction... C'est une fonction VC++ ? Moi je suis en BCB...
8.:DOMINION:.8
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
mais il n'y a pas de fonction VC++ ou BCB ou autre. C'est une fonction du systeme win32.
dans un fichier de resource tu dois avoir un truc de ce genre:
#define IDR_ACCEL 102
IDR_ACCEL ACCELERATORS
BEGIN
VK_F3, ID_DATE, VIRTKEY, NOINVERT
VK_ESCAPE, ID_QUIT, VIRTKEY, NOINVERT
END
ensuite dans ton code:
HACCEL hAccel = LoadAccelerators(hinst, MAKEINTRESOURCE(IDR_ACCEL));
la boucle des messages sera a modifier:
while(GetMessage(&msg, NULL, 0, 0)) {
if(!TranslateAccelerator(hmain, hAccel, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

d'autres methodes possibles, par exemple decomposer les messages dans la boucle GetMessage et les dispatcher de maniere perso.
BruNews, ciao...
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Ok mais est-ce que c'est une fonction utilisable uniquement quand le prog a le focus ou pas ? Je suppose que ça marche sans mais je préfère demander parce que si je dois me lancer dans un truc que je connais pas pour me rendre qompte que c'est pas ce que je veux...

8.:DOMINION:.8
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Bien entendu que cela n'est valable QUE a l'interieur de ton processus, chacun peut charger la table d'accelerateurs qu'il veut sans interferer sur les autres.
BruNews, ciao...
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

À la limite je préfère faire avec les hooks ça je connais... Explique moi juste comment il faut faire. Après (si j'ai le courage), j'essayerai avec LoadAccelerators
8.:DOMINION:.8
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Expliquer les HOOK, demain j'y suis encore. Vaut mieux que je t'ecrive un exemple j'irai plus vite.
Il me faut des details sur ton prog pour savoir quel race de hook generer et surtout comment il doit communiquer.
passe par le mail sinon sera trop long ici.
bnutiles@wanadoo.fr
BruNews, ciao...
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Je vais être plus clair : en fait j'essaye de faire un programme de contrôle de WinAmp ou autre programme (par exemple quand on est en train de programmer et qu'on est trop captivé par ce qu'on fait pour changer de fenêtre ;) ).
Mais pour ça je dois utiliser les hooks, ce qui revient a mon problème : je sais faire Ctrl, je sait faire N mais je sais pas faire Ctrl+N.

8.:DOMINION:.8
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
pour cela tu peux tester les touches par:
GetKeyState(VK_CONTROL) & 0x8000 par exemple.
Il y a aussi GetAsyncKeyState().
BruNews, ciao...
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Voilà c'est exactement ça que je voulais ! Encore merci ! (on aura fini par y arriver)

8.:DOMINION:.8