cs_legion91
Messages postés216Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention15 décembre 2010
-
4 juin 2003 à 17:46
cs_PaTaTe
Messages postés2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 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.
cs_PaTaTe
Messages postés2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 février 20212 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 février 20212 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 janv. 2009 à 14:58
sisi.
c'est une interface utilisée pour l'instruction
Implements ISubclasser
du ReyHotKey
cs_PaTaTe
Messages postés2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 février 20212 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 janv. 2009 à 14:26
retestes (j'ai uploadé la chose, en la modifiant pas mal)
cs_PaTaTe
Messages postés2126Date d'inscriptionmercredi 21 août 2002StatutContributeurDernière intervention19 février 20212 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és552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 20234 21 sept. 2007 à 01:54
Merci !
Une source vraiment excellente.
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 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és181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 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és174Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention18 février 2006 11 janv. 2006 à 20:48
Waouh...
Superbe source qui répond 100% à mes besoins !!!
Bonne continuation !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és44Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention31 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 déc. 2005 à 00:15
la base de registres ? pour quoi faire
DeathVB
Messages postés44Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention31 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és44Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention31 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és91Date d'inscriptionmercredi 6 novembre 2002StatutMembreDernière intervention20 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és91Date d'inscriptionmercredi 6 novembre 2002StatutMembreDernière intervention20 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 18 avril 2005 à 15:36
étrange....
comment quittes tu ton application ?
(code / bouton X ... )
gmni
Messages postés91Date d'inscriptionmercredi 6 novembre 2002StatutMembreDernière intervention20 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és24Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention24 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és171Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 6 mai 20071 8 mars 2005 à 17:13
Merci pour la source, c'est nickel pour moi :-)
10/10
@plus
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és42Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention20 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és132Date d'inscriptionmardi 31 octobre 2000StatutMembreDerniè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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 11 janv. 2004 à 20:18
Voilà rnosat, c'est corrigé....
rnosat
Messages postés132Date d'inscriptionmardi 31 octobre 2000StatutMembreDerniè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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és42Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention20 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és1Date d'inscriptionjeudi 5 juin 2003StatutMembreDerniè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és216Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention15 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.
12 janv. 2009 à 16:07
Sinon j'ai testé sous XP et Vista, même soucis.
12 janv. 2009 à 16:00
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 ^^
12 janv. 2009 à 15:59
étrange, dans la maquette, ca tourne avec 5 ....
quel Windows as tu ?
quels sont les raccourcis souhaités ?
12 janv. 2009 à 15:55
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.
12 janv. 2009 à 14:58
c'est une interface utilisée pour l'instruction
Implements ISubclasser
du ReyHotKey
12 janv. 2009 à 14:54
Sinon à quoi sert la classe ISubclasser.cls ? A rien à première vue :)
12 janv. 2009 à 14:26
12 janv. 2009 à 13:02
Une idée pour corriger cela ?
21 sept. 2007 à 01:54
Une source vraiment excellente.
15 sept. 2006 à 18:54
15 sept. 2006 à 18:42
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
11 janv. 2006 à 20:48
Superbe source qui répond 100% à mes besoins !!!
Bonne continuation !
8 déc. 2005 à 09:48
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é...
8 déc. 2005 à 00:24
alors il faut enregistrer le raccourci quelques par dans windows et je pense que c'est dans la base de registre !
8 déc. 2005 à 00:15
7 déc. 2005 à 19:26
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 ?!
7 déc. 2005 à 18:35
Shell pour lancer le programme, et un petit appel à FindWindow et DestroyWindow, pour chercher, et fermer le programme "cible"..
7 déc. 2005 à 18:03
On pourra pas par exemple affecter un raccourci à un programme sous windows pour l'ouvrir ou le fermer ?
19 avril 2005 à 12:49
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
18 avril 2005 à 18:05
Sinon merci pour ton attention,
a+ gmmni
18 avril 2005 à 16:12
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 ?
18 avril 2005 à 15:36
comment quittes tu ton application ?
(code / bouton X ... )
18 avril 2005 à 15:29
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 ?
9 avril 2005 à 01:32
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
8 mars 2005 à 17:13
10/10
@plus
13 janv. 2004 à 11:03
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 !
13 janv. 2004 à 09:32
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 ;-)
12 janv. 2004 à 20:20
voila un code super utile ... et surtout qui consomme peu de ressoures !
A la prochaine !
Rnosat
11 janv. 2004 à 20:18
11 janv. 2004 à 15:03
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
29 sept. 2003 à 14:53
je ne pense cependant pas que l'utilisation de cette classe soit vraiment differente de l'utilisation que tu pourrais en faire en VB...
29 sept. 2003 à 14:14
Merci d'avance!
6 juin 2003 à 18:37
4 juin 2003 à 17:46