[VB.NET] Raccourcie clavier avec les settings [Résolu]

Messages postés
200
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
28 septembre 2014
- - Dernière réponse : Gabilach
Messages postés
200
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
28 septembre 2014
- 18 mars 2012 à 16:44
Bonjour, mon soucis est que, dans ma Form1, il y a un Timer qui s’exécute après un bout de temps, il exécute alors mon code :
Dim Hotkey As Boolean = True
Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vkey As Long) As Integer

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Hotkey = GetAsyncKeyState(Keys.F5)
        If Hotkey = True Then
            Capturerbutton()
        End If
    End Sub


Je voudrais que dans ma Form3, j'est une Combobox me listant les touches du claviers, et que lorsque j'en est sélectionner une, que lorsque j’appuie sur mon bouton1, la touche s'enregistre dans les settings pour qu'elle puisse remplacer la touche F5 dans mon code.

Merci d'avance .

----------------------------------------------
Bonne programmation !!!
Gabilach...
Afficher la suite 

16 réponses

Meilleure réponse
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
46
3
Merci
le setting
project properties -> setting
tu déclare ta variable qui représente la touche
scoop user
ex mykeycode integer user
pour enregistrer
My.Settings.mykeycode = ?
je ne sais comment tu vas procéder parce que je
ne sais pas comment tu as lister tes keys
j'ai testé avec ça

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
My.Settings.mykeycode = e.KeyCode
End Sub

Private Sub Button1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseClick
If Convert.ToBoolean(GetAsyncKeyState(My.Settings.mykeycode)) Then
MessageBox.Show("you stroke hot key")
End If
end sub

pour qu'elle puisse remplacer la touche F5 dans mon code.
???
Keys.F5 = 116 remplacer quoi ????

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
Je me demandes par ailleurs quelle est la nécessité d'utiliser un timer, alors que tu peux jouer avec les messages de ton appli.
Transpose ceci en VB.Net (pas dur ... les long passant en integer) :
 Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
Private Type POINTAPI
    x As Long
    y As Long
End Type
Private Type Msg
    hWnd As Long
    Message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private couic As Boolean
Private Sub ProcessMessages()
    Dim Message As Msg
    Do While Not couic
        WaitMessage
        If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
            MsgBox "tu viens d'utiliser la hotkey que tu as définie"
        End If
        DoEvents
    Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
    couic = True
    Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
   Call UnregisterHotKey(Me.hWnd, &HBFFF&)
    Dim ret As Long
    couic = False
    ret = RegisterHotKey(Me.hWnd, &HBFFF&, 0, KeyCode)
    ProcessMessages
End Sub

Frappe une touche (une seule) dans la textbox
Ce sera ta hotkey
Essaye-la ensuite n'importe où dans ton appli ===>> tu vas comprendre.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
46
0
Merci
Salut

Je voudrais que dans ma Form3, j'est une Combobox

1
Erreur j'est verbe inconnu

2 combobox listant les touches du claviers
pour une touche tu as plusieurs choix

pourquoi faire un listing de toutes les touches
et ne pas se servir du key.down
ou key.up
Commenter la réponse de cs_ShayW
Messages postés
200
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
28 septembre 2014
0
Merci
Je veut lister les touches, pour que l'utilisateur choisisse avec quel touche il va activer "CapturerButton()".

Tu ne comprend toujours pas ? :O

Lis le code que j'est inscrit.

----------------------------------------------
Bonne programmation !!!
Gabilach...
Commenter la réponse de Gabilach
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
46
0
Merci
déja met à explicit on
GetAsyncKeyState rend un integer et non un boolean

non je ne comprend pas comment tu listes les touches du clavier et que signifie lister
les touches
Commenter la réponse de cs_ShayW
Messages postés
200
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
28 septembre 2014
0
Merci
Oublie "lister les touches" , basiquement je voudrais que dans mon combobox, si je clique sur une des touches présentes (F5, Ftruc...), cette touche soit enregistrer en tant que settings et quel remplace mon F5 dans mon code, tu ne voit toujours pas ?

----------------------------------------------
Bonne programmation !!!
Gabilach...
Commenter la réponse de Gabilach
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
1
0
Merci
Bonjour,

Regardes ce lien (4 pages a lire):
http://visualbasic.about.com/od/usingvbnet/a/appsettings.htm

Je pense qu'il devrait t'aider ou te donner des idees a suivre.
A+,

JLuc01
Commenter la réponse de cs_JLuc01
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bonjour, ShayW,

Assez peu clair, en effet.
Je crois avoir deviné qu'il veut remplacer F5 par son choix dans la combo dans
Hotkey = GetAsyncKeyState(Keys.F5)
(mais n'en suis pas certain).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Et "lister" voudrait peu-être dire "peupler la combo"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Et si c'est dans le but que je devine, il ferait mieux de laisser ce choix à l'utilisateur (une simple textbox où l'utilisateur serait invité à frapper sa touche, alors analysable et mise en mémoire).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
46
0
Merci
Bonjour Ucfoutu

oui pas clair
Et "lister" voudrait peu-être dire "peupler la combo"

par quoi ?
le key.code de chaque touche

remplacer F5 par une autre touche
tu veux dire si par ex remplacer F5 par la touche "A"
si je frappe F5 dans un textbox j'ai
textbox1.text = "A"
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Non !
Selon ce que je pense :
Décider que la hotkey de l'appli est celle choisie dans la combo (qui, elle, contiendrait toutes les possibilités de choix de hotkey).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
200
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
28 septembre 2014
0
Merci
Bonjour Us, tu à tout compris .

Je me suis débrouiller, j'y suis arrivez en modifiant le code de ShayW (Merki ^^), j'arrive avec un settings type "Long", à enregistrer le numéro de la touche qui est tapez dans la Textbox, puis de l'utiliser, je me pose ensuite la question, lorsque l'utilisateur tape sa lettre dans la Textbox, serait-il possible de faire l'inverse du code de ShayW ? C'est à dire retrouver la touche, à partir du code du textbox, je sais que si on tape la touche normalement sa marche, le problème c'est que si l'utilisateur clique sur les touches, comme dans mon code, bas F5, Ftruc... Bas sa ne fait rien .

Merci d'avance !

----------------------------------------------
Bonne programmation !!!
Gabilach...
Commenter la réponse de Gabilach
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bonjour Us, tu à tout compris

Je ne vois pas de message signé "Us". Il se peut alors que tu aies frappé Us à la place de Uc.
Lève cette ambiguïté, de sorte à ce que nous sachions avec certitude vers quoi s'orienter et t'orienter.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Mais en te relisant lentement : plus de doute : tu te référais bien à ce que je disais

Il te suffit d'une variable publique (appelons-la racc):
Dans l'évènement Keydown pou KeyUpp de la textbox dédiéez à ce choix :
- relève le keycode
- attribue sa valeur à racc
- désenregistre toute hotkey éventuellement présente
- crée ta nouvelle hotkey en lui passant racc comme argument (c'est là et pas dans le timer, que tu dois faire cela).

dans ton évènement timer : uniquement
If Hotkey = True Then
            Capturerbutton()
        End If

Je ne suis pas VB.Nettiste, mais peux te faire cela en VB6 (et ce sera facilement transposable).
tu dis ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
200
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
28 septembre 2014
0
Merci
Re-bonjour "Uc", je me suis éfféctivement trompé, j'ai écrit Us au lieu de Uc Désoler , sinon pour ma part je me suis débrouillez d'une autre façon beaucoup plus adéquate, qui remplace mon Text dans ma combobox pour qu'il soit plus simple de compréhension .

Merci à vous pour l'aide apporté et bonne continuation!

----------------------------------------------
Bonne programmation !!!
Gabilach...
Commenter la réponse de Gabilach