[VB.NET] Raccourcie clavier avec les settings

Résolu
Gabilach Messages postés 200 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 28 septembre 2014 - 15 mars 2012 à 15:20
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...

16 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 mars 2012 à 09:55
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 ????
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 17:40
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
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 mars 2012 à 18:43
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
0
Gabilach Messages postés 200 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 28 septembre 2014
15 mars 2012 à 20:07
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...
0

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

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 mars 2012 à 20:43
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
0
Gabilach Messages postés 200 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 28 septembre 2014
16 mars 2012 à 07:49
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...
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
16 mars 2012 à 11:29
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 11:39
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 11:40
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 11:43
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 mars 2012 à 12:35
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"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 12:57
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
0
Gabilach Messages postés 200 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 28 septembre 2014
16 mars 2012 à 16:39
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 16:55
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mars 2012 à 17:21
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
0
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
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...
0
Rejoignez-nous