Bonjour,
Sur une application DELPHI, j'aimerais faire afficher un message lorsque la combinaison de touche CTRL + ALT + V est saisie.
Merci
Bonjour,
Sur une application DELPHI, j'aimerais faire afficher un message lorsque la combinaison de touche CTRL + ALT + V est saisie.
Merci
Propriété KeyPreview de la fiche à True et dans l'événement OnKeyDown :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = Ord ('V')) and (Shift = [ssCtrl, ssAlt]) then ShowMessage ('V') end;
Bonjour et bienvenue sur les forums de Developpez.com ,
Tout dépend ce que tu veux faire ...
Si c'est pour rester que dans le cadre de l'application, tu peux utiliser la réponse citée ci-dessus
Sinon, pour faire un peu plus complet si je puis dire, on peut se tourner vers les HotKeys :
Dans la partie private de la Form, il faut ajouter ceci :
Ensuite, on implémente la procédure WMHotKey :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 hotkey1: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
Pour terminer, on compléte le OnCreate ainsi que OnDestroy de la form :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if msg.HotKey = hotkey1 then begin // On définit les action à faire ShowMessage("Ctrl + Alt + V pressé"); end; end;
Voilà en gros le principe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TForm1.FormCreate(Sender: TObject); const MOD_ALT = 1; MOD_CONTROL = 2; // Touche Control nécessaire begin hotkey1 := GlobalAddAtom('Hotkey1'); RegisterHotKey(handle, hotkey1, MOD_CONTROL + MOD_ALT,VK_V); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(handle, hotkey1); // Désactive le HotKey end;
En espérant t'avoir aidé
(PS : Code non testé car je n'ai pas Delphi sous la main)
A+
Ca marche.
Merci
Bonjour à tous,
je suis débutant dans delphi, et lorsque j'utilise le code d'ero-sennin, delphi me donne une erreur sur VK_V "undeclared identifier VK_V"
J'ai regarder l'aide de Delphi mais je ne comprends pas grand chose
Quelqu'un peut-il m'expliquer?
Merci
Arf le boulet j'ai tout essayé sauf ça Ord(numero de touche)
Merci pour ton aide
Arf bon j'ai essayé plein de manipe et je n'y arrive pas quelqu'un peut me dire ce qui cloche?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 unit pressed_touch; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private hotkey1: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if msg.HotKey = hotkey1 then begin // On définit les action à faire ShowMessage('Ctrl + Alt + V pressé'); end; end; procedure TForm1.FormCreate(Sender: TObject); const MOD_ALT = 1; MOD_CONTROL = 2; // Touche Control nécessaire begin hotkey1 := GlobalAddAtom('Hotkey1'); RegisterHotKey(handle, hotkey1, MOD_CONTROL + MOD_ALT,Ord('v')); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(handle, hotkey1); // Désactive le HotKey end; end.
Salut,
C'est v avec une majuscule
Au passage, merci à toi Andnotor pour m'avoir corrigé mon code précédent
Code : Sélectionner tout - Visualiser dans une fenêtre à part RegisterHotKey(handle, hotkey1, MOD_CONTROL + MOD_ALT,Ord('V'));
A+
Non mais les gars je sais que je suis un véritable burne sous delphi mais j'ai quand meme essayé la majuscule. Et quand je fais Ctrl + Alt + V rien ne se passe
Help please.... Merci
Ba heu, chez moi ça fonctionne
J'ai juste fait un nouveau projet, copié coller ce qui m'intéressé puis j'ai lancé l'application et j'ai fait un CTRL+ALT+V et c'est tout ok
J'ai dit V majuscule dans le post précédent, car le v minuscule ne fonctionne pas (Ord ne prenant que les majuscules). Et vu ton code, c'était cette erreur qui m'interpelait!
Arf je deviens fou lol, je suis sous Delphi 7 peut etre du à ca
Dit moi ero-sennin pourrais-tu me coller ton code intégrale? svp
Car la je ne comprends vraiment pas ce qui cloche
Merci
Salut,
Je te ferais un projet ce soir, actuellement je ne peux pas...
Sinon, il y a un autre post: ici
Tu te crées un nouvelle application qui ne contient que le code que j'ai fourni, et ça devrait aller
A+
Es-tu sûr que cette combinaison n'est pas déjà utilisée par un autre processus ?
Ajoute cette ligne après RegisterHotKey pour avoir un éventuel feedback de l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShowMessage(SysErrorMessage(GetLastError));
Voila le code complet:
Le dpr:
Le PAS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 program hotkey; uses Forms, pressed_touch in 'pressed_touch.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Si ca marche chez vous la je me tire une balle lol
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 unit pressed_touch; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private hotkey1: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if msg.HotKey = hotkey1 then begin // On définit les action à faire ShowMessage('Ctrl + Alt + V pressé'); end; end; procedure TForm1.FormCreate(Sender: TObject); const MOD_ALT = 1; MOD_CONTROL = 2; // Touche Control nécessaire begin hotkey1 := GlobalAddAtom('Hotkey1'); RegisterHotKey(handle, hotkey1, MOD_CONTROL + MOD_ALT,Ord('V')); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(handle, hotkey1); // Désactive le HotKey end; end.
Salut,
Chez moi, ça fonctionne
Mais dit moi, pour créer les OnCreate et OnDestroy, tu as bien fait un double clic sur l'événement attendu dans l'inspecteur d'objets, onglet événement ?
Car là, en effet ça fonctionne pas
Bon bin la je sors !!!!
Merci pour ton aide, ca fonctionne maintenant Enfin au moin avec toutes les manipes que j'ai essayé j'ai quand meme appris quelque chose lol.
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager