Raccourci avec les hooks

cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008 - 25 juin 2003 à 14:33
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008 - 25 juin 2003 à 15:51
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2003 à 14:42
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...
0
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
25 juin 2003 à 14:45
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2003 à 14:58
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...
0
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
25 juin 2003 à 15:03
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2003 à 15:19
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...
0
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
25 juin 2003 à 15:23
À 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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2003 à 15:34
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...
0
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
25 juin 2003 à 15:35
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2003 à 15:39
pour cela tu peux tester les touches par:
GetKeyState(VK_CONTROL) & 0x8000 par exemple.
Il y a aussi GetAsyncKeyState().
BruNews, ciao...
0
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
25 juin 2003 à 15:51
Voilà c'est exactement ça que je voulais ! Encore merci ! (on aura fini par y arriver)

8.:DOMINION:.8
0
Rejoignez-nous