EVENEMENT RACCOURCIS CLAVIER

cs_legion91 Messages postés 216 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 15 décembre 2010 - 4 juin 2003 à 17:46
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 12 janv. 2009 à 16:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7330-evenement-raccourcis-clavier

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
12 janv. 2009 à 16:07
Les raccourcis souhaités sont configurable dans l'interface de mon programme. donc tous on va dire ^^

Sinon j'ai testé sous XP et Vista, même soucis.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 janv. 2009 à 16:00
et pour le ISubclasser, non pas dans une autre.
ce module est reccurrent dans lmes projets, suffit d'ajouter le module et l'interface, ca tourne direct, sans se poser de question...

l'interface est une garantie de ne pas oublier de code ^^
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 janv. 2009 à 15:59
:/

étrange, dans la maquette, ca tourne avec 5 ....

quel Windows as tu ?
quels sont les raccourcis souhaités ?
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
12 janv. 2009 à 15:55
L'intégrer dans l'autre classe n'était pas possible (vue le peu de code lol) ?

Sinon la classe ne fonctionne pas dans mon projet au delà de 3. Pareil que l'ancienne mise à part que parfois elle ne n'initialise même pas.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 janv. 2009 à 14:58
sisi.

c'est une interface utilisée pour l'instruction
Implements ISubclasser
du ReyHotKey
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
12 janv. 2009 à 14:54
Le code fonctionne impacablement. Je l'integrerais tout à l'heure pour vérifier si c'est toujours le cas dans mon projet.

Sinon à quoi sert la classe ISubclasser.cls ? A rien à première vue :)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 janv. 2009 à 14:26
retestes (j'ai uploadé la chose, en la modifiant pas mal)
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
12 janv. 2009 à 13:02
Je viens de remarquer une chose. Tant que je ne dépasse pas 3 raccourcis, la classe fait son office ; A partir de 4, tout code qui suis les Register ne sont pas exécutés (ce qui inclus ProcessMessages donc la classe ne tourne pas).

Une idée pour corriger cela ?
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
21 sept. 2007 à 01:54
Merci !
Une source vraiment excellente.
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
15 sept. 2006 à 18:54
Oups, j'ai oublié de préciser. J'ai Win XP et chez moi, la touche PLAY du clavier correpond au code 179. J'espère que c'est pareil pour tout le monde :-(
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
15 sept. 2006 à 18:42
Vu la date du post, j'arrive un peu en retard... comme d'hab!
En tout cas, bravo pour cette classe. Je ne savais même pas que ça existait.
Je ne l'ai pas testé en grandeur nature, mais un 9/10 me semble logique.

Par contre, pour trouver le vbKey de la touche PLAY de mon clavier multimédia... c'est pas évident, surtout si l'aide que j'ai trouvé sur vbKey dans VB date de 1995 (le multimédia existait à cette époque?)!
Alors pour ce qui sont dans le même cas que moi, y a une API qui s'en occupe : GetAsyncKeyState.

Créez un nouveau projet avec un TextBox (name=Text1) et un Timer (name=Timer1) et copiez le text suivant dans la Form:

Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
' Cet API vous donnera le code vbKey associé à la touche préssée.
' Pour le code des touches 'usuelles', se référer à
' - l'aide de VB en tapant VBKEY dans la recherche
' - à la page http://www.vbfrance.com/codes/COMMENT-CONNAITRE-MOTS-PASSE-FACON-PLUS-SIMPLISTE-MONDE_17232.aspx
' Pour les touches plutôt 'nouvelles' genre clavier multimédia avec touches PLAY etc, _
je n'ai pas trouvé de nom conventionné comme par ex. vbKeyA pour la touche 'A'. _
En toute logique pour PLAY, le nom serait vbKeyPlay, mais allez savoir...


Private Sub Form_Load()
Text1.Text = vbNullString
Timer1.Interval = 1
' L'interval UN (exprimé en milliseconde) est juste pour cet essai, histoire d'être sur _
que la touche pressée sera 'captée' par le process Timer. _
Faut pas oublier que cet interval aussi petit dérange le processeur inutilement.
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim myKey As Integer
For myKey = 0 To 256 'on scanne toute les touche du clavier
' Normalement, mkey n'est jamais égal à zéro
' La boucle va jusqu'à 256 (valeur max 8 bits), mais votre clavier n'a sans doute pas autant de touches :-)
If GetAsyncKeyState(myKey) <> 0 Then
Text1.Text = myKey
End If
Next myKey
End Sub
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
11 janv. 2006 à 20:48
Waouh...

Superbe source qui répond 100% à mes besoins !!!

Bonne continuation !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 déc. 2005 à 09:48
J'avoue ne pas saisir...

Ce que j'ai compris :
Tu souhaite faire un petit programme, qui tourne, admettons dans le Systray...
Quand tu presses par exemple sur Ctrl + E :
- Si le Bloc-Notes est fermé, le lancer
- S'il est ouvert, le fermer...

si c'est bien cela, je dirais que dépendant du programme cible, il peu être maladroit voire dangereux de le fermer d'autorité...
DeathVB Messages postés 44 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 31 octobre 2006
8 déc. 2005 à 00:24
bah oui puisque l'application sera fermer, je ne vois pas comment on va ouvrir Word par exemple;
alors il faut enregistrer le raccourci quelques par dans windows et je pense que c'est dans la base de registre !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 déc. 2005 à 00:15
la base de registres ? pour quoi faire
DeathVB Messages postés 44 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 31 octobre 2006
7 déc. 2005 à 19:26
à condition que l'application soit fermer !

autrement dit:
si par exemple j'appuie sur (Ctrl+E), windows connais le raccourci et ouvre le programme associé !

je pense qu'il faut mettre quelque chose dans la base de registre ?!
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 déc. 2005 à 18:35
Si, bien sur...
Shell pour lancer le programme, et un petit appel à FindWindow et DestroyWindow, pour chercher, et fermer le programme "cible"..
DeathVB Messages postés 44 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 31 octobre 2006
7 déc. 2005 à 18:03
salut

On pourra pas par exemple affecter un raccourci à un programme sous windows pour l'ouvrir ou le fermer ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 avril 2005 à 12:49
Merci de l'info...

pour décharger simplement toutes les fenetres ouvertes dans ton appli... :

Private Sub Form_Unload()
Dim Form as Form
For Each Form In Forms
If Not Form Is Me Then
Unload Form
End If
Next Form
End Sub
gmni Messages postés 91 Date d'inscription mercredi 6 novembre 2002 Statut Membre Dernière intervention 20 mars 2009
18 avril 2005 à 18:05
Désolé, en fait le truc etait de mettre ton code sur la form "main", ou la prmiere form de demarrage,
Sinon merci pour ton attention,
a+ gmmni
gmni Messages postés 91 Date d'inscription mercredi 6 novembre 2002 Statut Membre Dernière intervention 20 mars 2009
18 avril 2005 à 16:12
Mon programme est tres lourd.
J'ai un "Form_Unload" sur la form principale avec ce type d'evénements :
Unload about
Unload Chemin
Unload conf
Unload debut
Unload infos
Unload listz
Unload mini
Unload wait
J'ai aussi essayé avec un QueryUnload.

Type d'erreurs :
'
Quand du systray j'ouvre ma fenetre principale, erreur :
"Object was unloaded"
Il me marque en jaune le nom de la form qui contient ton code:
ex: racc.hide
'
Quand je quitte avec le bouton X de la fenetre principale: Rien ce passe.
'
Quand je quitte à partir du systray (form fille du programme):
"Run-time error '365'
Unable to unload within context"
Il me marque "Unload F1" (F1 est la form principale).
'''
J'ai l'impression que ta source prend le dessus sur tous les evenements, meme quand on desactive
avec "HotKey.StopProcessing".
Alors comment la désactiver completement ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 avril 2005 à 15:36
étrange....

comment quittes tu ton application ?
(code / bouton X ... )
gmni Messages postés 91 Date d'inscription mercredi 6 novembre 2002 Statut Membre Dernière intervention 20 mars 2009
18 avril 2005 à 15:29
Ce code est exellent sauf que...
Sur mon projet il y a plusieurs fenetres. En quittant mon prog, j'ai des erreurs du type "Objet was unload", et il est impossible de fermer la fenetre principale. Quand je met ton code sur celle-ci, l'interface disparait brusquement, rien ce passe... Sinon sur une autre form il y a toujours un bug quand je quitte... Bien étrange non ?
cs_Bilou972 Messages postés 24 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 24 novembre 2008
9 avril 2005 à 01:32
Salut,
ta source me donne preske la solution que je cherche, connaitrais tu un moyen d interagir avec des applications grace aux touches multimedia d' un clavier??
je pense aux keycodes, mais je n'ai pa reussi a les integrer a ta source.

voila mes keycodes :
suivant : 176
play : 179
stop : 178
precedent : 177
cs_NoFutur Messages postés 171 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 1
8 mars 2005 à 17:13
Merci pour la source, c'est nickel pour moi :-)
10/10

@plus
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 janv. 2004 à 11:03
Sans doute que c'est possible.... si tu peux importe la classe HotKey
il te suffirais de copier coller le code présent dans la form, enfin, a quelques details pres, je pense, je te l'ai dit, VBA, je connais pas trop !
ezekiel95 Messages postés 42 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 20 mai 2005
13 janv. 2004 à 09:32
Dis moi, j'en reviens toujours a ma question sur vba:
Ce type de form n'est pas gérer par vba mais tout le code est dans la classe "ReyHotKey" et est donc utilisable,non?
Quelle classe faut il instancier pour débuter le programme?

Bizoo ;-)
rnosat Messages postés 132 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 2 mai 2004
12 janv. 2004 à 20:20
Super renfield, ca marche, merci !
voila un code super utile ... et surtout qui consomme peu de ressoures !
A la prochaine !
Rnosat
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 janv. 2004 à 20:18
Voilà rnosat, c'est corrigé....
rnosat Messages postés 132 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 2 mai 2004
11 janv. 2004 à 15:03
Euh,
moi, sous windows xp avec vb6 prof, la pression de CTRL + SHIFT + Q ne produit rien ! la form reste affichée sans devenir "maximized" ou "minimized".
Je ne vois pas la source de l'erreur, idéees ?
Rnosat
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 sept. 2003 à 14:53
Je ne m'y connais helas pas en VBA.

je ne pense cependant pas que l'utilisation de cette classe soit vraiment differente de l'utilisation que tu pourrais en faire en VB...
ezekiel95 Messages postés 42 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 20 mai 2005
29 sept. 2003 à 14:14
Une bonne ame pourrait elle me dire comment faire pour s'en servir sous VBA?Je ne peux importer que la classe et je m'y connais moyen en manipulation de classe...

Merci d'avance!
Matth1986 Messages postés 1 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 6 juin 2003
6 juin 2003 à 18:37
merci pour ta source (surtout pour ton module de classe). elle m'a bien servi dans un prog de chargement de site internet (raccourci Crtl+Enter permettant d'ajouter www."ton adresse" .com)
cs_legion91 Messages postés 216 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 15 décembre 2010
4 juin 2003 à 17:46
Je te remercie vraiment d'avoir non seulment repondu a ma kestion dans le forum(http://www.vbfrance.com/forum.aspx?article=67865) mais aussi d'avoir postez cette source ki marche impec, chapeau ;-) et encore merci.
Rejoignez-nous