Visual basic, Créer un raccourci clavier [Résolu]

kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 2 août 2016 à 16:39 - Dernière réponse : kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention
- 9 août 2016 à 00:12
Bonjour,
Je demande encore une fois votre aide
J'ai fait beaucoup de recherche est j'ai finalement trouvé se que je cherche, voici le code :

Imports System.Runtime.InteropServices
Public Class Form3
<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function RegisterHotKey(ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As UInteger, ByVal vk As UInteger) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Enum Options
Ctrl = &H2
Alt = &H1
Shift = &H4
Windows = &H8
End Enum
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = 786 Then
PictureBox1.BackColor = Color.Violet
End If
MyBase.WndProc(m)
End Sub
Sub RegisterKey(ByVal Options As Options, ByVal Key As Keys)
RegisterHotKey(Me.Handle, 1, Options, CUInt(Key))
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RegisterKey(Options.Ctrl, Keys.V)
End Sub
End Class

Ce code permet de créer un raccourci clavier pour la forme, et ce raccourci peut être utilisé même si la forme n'est pas sélectionner
Le problème est que ça marche pour tous les autres combinaisons (par exemples : Ctrl +V , Ctrl + C, Alt + B ... etc), mais pas avec les combinaisons qui contient la touche Windows (par exemple : Windows + D)
Aidez-moi s'il vous plait pour résoudre ce problème
Merci d'avance pour votre aide
--
Comment ça marche c'est cool! 
      1000 Merci les Amis
Afficher la suite 

28 réponses

Répondre au sujet
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 3 août 2016 à 11:22
0
Utile
j'ai fait une erreur quand j'ai copier le code
c'est : Windows = &H312 et non Windows = &H8
mais même comme ça, ça ne marche pas
et aussi cette partie là :
If m.Msg = 786 Then

je n'arrive pas a la comprendre ça m.Msg = 786
il signifie quoi? et si je veux créer plusieurs raccourci clavier comment faire? quelle sera la condition en plus de :
If m.Msg = 786 Then

End If

merci de m'éclairer
Commenter la réponse de kikou93
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 3 août 2016 à 12:58
0
Utile
Bonjour,
je n'arrive pas a la comprendre ça m.Msg = 786
il signifie quoi?

Excuse-moi, mais si tu l'as écrit, c'est que tu pensais, TOI, qu'ilo signifiait quelque-chose, non ?
Je te retourne donc ta question : que penses-tu, toi qui l'as écrit;, qu'il signifie ?
J'attends ta réponse !
Commenter la réponse de ucfoutu
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - Modifié par kikou93 le 3/08/2016 à 13:05
0
Utile
merci de m'avoir répondu
désolé, mais ce n'ai pas moi écris ce code, je l'ai trouvé après avoir fait des recherche (ce code a été proposé dans tutoriel dans YouTube)
voici le lien
https://www.youtube.com/watch?v=4ArX6QmDkAA&index=1&list=PL4Uk7_mD-fVmE50wsX37_hcHg-XDx6-wk

c’est pour ça que j'ai demandé d'en savoir plus je voulais le comprendre mieux
Commenter la réponse de kikou93
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 3/08/2016 à 18:05
0
Utile
Je n'ai absolument pas l'intention de suivre un "tuto" à la "neuneu" qui dure 10 minutes pour répondre à une question !
Mon instinct (bien que ne connaissant quasiment rien de VB.Net) et mon petit doigt me disent cependant que ton "m" n'en est pas un et est probablement l'un des paramètres d'une sub, qui est probablement le paramètre e qui correspond aux messages de Windows.
Voilà voilà

EDIT : le même instinct et mon petit doigt me disent également que la vocation de ce message est de faire savoir si une exécution a réussi ou non.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 3 août 2016 à 18:32
0
Utile
6
Bonjour à kikou93 ainsi qu'à ucfoutu
Par curiosité j'ai regardé une partie du "tuto" à la "neuneu"
Ce que cette personne propose en vidéo n'a rien à voir avec un tutoriel digne de ce nom ( comme beaucoup de soi-disant tutoriels proposés ainsi en vidéo)
Rien de sérieux à en tirer : point barre
vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention > kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 3 août 2016 à 21:21
Rebonsoir Kikou93
Désolé je n'ai aucun code "meilleur" que celui que tu as !
Ce que je voulais dire au niveau du tutoriel c'est que d'abord un tutoriel a une explication et un but bien clairement expliqués ainsi que le code qui va avec et surtout avec des commentaires sur le code lui-même ( paramètres des fonctions, explication sur une Sub, etc..... lorsque c'est nécessaire à la compréhension du code)
si le code était bien commenté le m.Msg = 786 aurait été expliqué par exemple.
Ce qui fait que l'on comprend non seulement ce que fait le code mais que l'on est capable si nécessaire de l'améliorer
Là il n'en est rien !
A tout hasard j'ai trouvé cela et le m.Msg = 786 est expliqué : https://social.msdn.microsoft.com/Forums/fr-FR/6568eaec-c061-4883-aba1-7af71a582e00/mise-en-place-de-raccourcis-clavier-hotkey-dans-une-application-vbnet?forum=vbasicfr

D'après ce code Windows n'est pas = à 312 mais à 8
le 312 est en hexadécimal et vaut le 786 décimal de VM_Hotkey
312 hexa = (3 *256) + (1*16) + 2 soit 786 décimal

VM_Hotkey est expliqué dans le lien ci-dessus
Bon courage
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention > vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 3 août 2016 à 23:16
Merci vb95
je vais y jeter un oeil et je te tiendrai au courant
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention > vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 3 août 2016 à 23:47
salut vb95
j'ai essais sont code
alors quand je fais :
RegisterHotKey(Me.Handle, HOTKEY_ID2, FsModifiers.Windows , Keys.V)

ça ne marche toujours pas
mais si je fais ça :
RegisterHotKey(Me.Handle, HOTKEY_ID2, FsModifiers.Windows + FsModifiers.Control, Keys.V)

ça marche
peux-être qui n'accepte pas la touche windows seul
vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention > kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 00:15
Pour moi c'est certain que la touche Windows seule n'est pas acceptée (de toute façon on l'associe toujours avec une autre touche) tout comme la touche Ctrl ou la touche Alt )
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 00:54
tu m'a mal compris , je voulais dire que la touche Windows on ne doit pas lui ajouter seulement un alphabet (comme A B C D ) mais aussi " Ctrl ou Alt ou shift"
en d'autre terme les raccourci clavier
Windows + D
Windows + V
Windows + S
Windows + R ..etc.
ne marche pas, mais :
Ctrl + Windows + D
Alt + Windows + V
Ctrl + Windows + S
shift + Windows + R ..etc
marche, c'est la conclusion que j'ai tiré après beaucoup d'essais
Commenter la réponse de vb95
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 4/08/2016 à 08:25
0
Utile
On ne peut bien évidemment "dérober" à Windows ses propres raccourcis.
Windows + D, par exemple, est un raccourci Windows déjà défini pour réduire une fenêtre.

EDIT (rien à voir directement avec ton problème, mais à garder à l'esprit) : De manière générale, on ne peut définir des touches déjà définies comme raccourci sans avoir au préalable supprimé ce raccourci déjà présent).

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - Modifié par kikou93 le 4/08/2016 à 10:34
0
Utile
Bonjour ucfoutu

Merci de m'avoir répondu
C'est ce que tu dit est vrais normalement les raccourci clavier comme :
Ctrl +V
Ctrl +C
Alt + P ... marche

et si ne me trempe pas le raccourci Windows + V n'est pas un raccourci de Windows (il n'existe pas déjà), alors pour il ne marche pas.
mais si je fais!
Ctrl + Windows + V ça marche

je crois que le code de Windows ni n'est le 8 ni le 312 si pourquoi ça ne marche pas

éclaire moi s'il te plait
Commenter la réponse de kikou93
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 août 2016 à 10:50
0
Utile
2
et si ne me trempe pas le raccourci Windows + V n'est pas un raccourci de Windows (il n'existe pas déjà)

- Il n'est pas interdit de se "tremper", voire de se baigner, plonger, etc ... en été
- avant de faire une telle affirmation, tu aurais dû vérifier ce que fait (car oui, il fait quelque chose) le raccourci Windows + V, hein ...
Ce n'est pas difficile de le vérifier : depuis cette même fenêtre ===>>> Windows + V ===>> et tu OUVRES bien tes yeux ...
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 11:18
Ce n'est pas difficile de le vérifier : depuis cette même fenêtre ===>>> Windows + V ===>> et tu OUVRES bien tes yeux ...

désolé ucfoutu mais j'ai beau cliquer sur Windows + V pendant que je suis toujours sur cette fenêtre comme tu dit mais rien ne change ou n'apparaît (est crois moi j'ai les yeux bien ouverts)
et aussi j'ai fait des recherches dans mon moteur de recherche Google sur le racourci clavier Windows +V et je n'ai trouvé aucun résultat
vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention > kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 14:15
https://support.microsoft.com/fr-fr/help/12445/windows-keyboard-shortcuts
et tu auras tous les raccourcis dont Windows + V
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 4/08/2016 à 11:20
0
Utile
Et puis, tu fais comme nous tous : tu te documentes un peu.
Cet aspect n'a rien à voir avec VB et tout à voir avec Windows.
Je te suggère cette lecture :
https://blogs.msdn.microsoft.com/oldnewthing/20071130-00/?p=24333
Par ailleurs, le code de la touche LOGO (c'est le nom de la touche WINDOWS) est pour moi 91

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 août 2016 à 11:32
0
Utile
et aussi j'ai fait des recherches dans mon moteur de recherche Google sur le racourci clavier Windows +V et je n'ai trouvé aucun résultat

Ah ??? ===>> rendez-vous à prendre avec un ophtalmo, donc ...
Commenter la réponse de ucfoutu
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 11:39
0
Utile
merci ucfoutu pour le site, je vais y jeter un œil

Par ailleurs, le code de la touche LOGO (c'est le nom de la touche WINDOWS) est pour moi 91

est-ce que c'est différent pour chaque ordinateur? si c'est le cas, comment tu as su que c'était 91?
Commenter la réponse de kikou93
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 août 2016 à 12:40
0
Utile
3
est-ce que c'est différent pour chaque ordinateur? si c'est le cas, comment tu as su que c'était 91

euh ....
peut-être ( ????? !!!!!) en me contentant (suis-je donc bête ....) d'afficher ce que j'obtiens en affichant ce que j'obtiens dans ... l'évènement Keydown (en pressant cette touche) !!!!
Je crois tout simplement, kikou93, que toutes tes "hésitations", "interrogations", etc ... résultent de ce que tu veux brûler des étapes en passant allègrement à côté des bases et de la réflexion élémentaire.
Message très amical pour toi : tu devrais commencer par le tout début et avancer pas à pas, plutôt que de tenter de "fonctionner" comme tu prétends "fonctionner.
Bonne continuation.
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 12:51
avec ta façon de parler je n'ai meme pas envie de te répondre, merci comme même de m'avoir consacré du temps
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 14:36
Il n'y a pas de quoi.
Bonne chance.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 5 août 2016 à 11:24
Je vois, Kikou93, que tu as signalé ma réponse comme ne "respectant pas la charte de politesse" !
Si tu estimes que ce que j'ai exposé, à savoir ton besoin évident de commencer par l'apprentissage des bases est une impolitesse, ma foi ... ===>>
1) je me vois très mal te dire les choses autrement
2) je me vois encore plus mal répondre à toute nouvelle discussion que tu ouvrirais.
Bonne continuation ...
Commenter la réponse de ucfoutu
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 19:35
0
Utile
1
comme je le penser le code de la touche Windows ni le 8 ni le 312, parce que si je fais :

  Enum Options
Ctrl = &H2
Alt = &H1
Shift = &H4
Windows = &H8
Alt_Windows = &H9
Ctrl_Windows = &H10
Shift_Windows = &H12
End Enum
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = 786 Then
PictureBox1.BackColor = Color.Black
End If
MyBase.WndProc(m)
End Sub
Sub RegisterKey(ByVal Options As Options, ByVal Key As Keys)
RegisterHotKey(Me.Handle, 1, Options, CUInt(Key))
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RegisterKey(Options.Windows, Keys.A)
End Sub


ça ne marche pas

mais si je fais :

  Enum Options
Ctrl = &H2
Alt = &H1
Shift = &H4
Windows = &H8
Alt_Windows = &H9
Ctrl_Windows = &H10
Shift_Windows = &H12
End Enum
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = 786 Then
PictureBox1.BackColor = Color.Black
End If
MyBase.WndProc(m)
End Sub
Sub RegisterKey(ByVal Options As Options, ByVal Key As Keys)
RegisterHotKey(Me.Handle, 1, Options, CUInt(Key))
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RegisterKey(Options.Alt_Windows - Options.Alt, Keys.A)
End Sub


ça marche
et aussi ce que à dit est vrais ucfoutu car si je fais Windows + D ça ne marche pas car Windows + D est un raccourci de Windows (il existe déjà)
mais il y a une chose que je ne comprend pas, si les raccourci clavier de Windows ne peuvent pas être utiliser à nouveau dans le code , alors pourquoi Ctrl + V ou Ctrl +C marche?, il sont censés être des raccourci clavier de Windows non ?
vb95 1504 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 4 août 2016 à 21:23
Salut kikou93
Ctrl + C par exemple n'est pas qu'un raccourci Windows uniquement mais aussi un raccourci pour Word, Notepad et bien d'autres logiciels !
Les raccourcis CTRl + une lettre sont utilisés dans de nombreux logiciels alors que ceux avec la touche Windows ne sont utilisés que par le système d'exploitation Windows.
Cela explique pourquoi les raccourcis avec la touche Windows ne fonctionnent pas
Commenter la réponse de kikou93
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 août 2016 à 21:07
0
Utile
1
si les raccourci clavier de Windows ne peuvent pas être utiliser à nouveau dans le code

Où as-tu lu une telle chose ?
Utiliser est UNE chose, définir en est UNE AUTRE !
Là, vraiment .... bref.
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 4 août 2016 à 22:08
désolé, c'est vrais j'ai fait je me suis mal exprimé (c'est "définir" au lieu de "utiliser")
Commenter la réponse de ucfoutu
kikou93 399 Messages postés mardi 4 février 2014Date d'inscription 13 avril 2018 Dernière intervention - 9 août 2016 à 00:12
0
Utile
j'abandonne l'idée de créer un raccourci clavier avec windows+D parceque c'est impossible
merci pour tout les personne que mon aider sur ce sujet
Commenter la réponse de kikou93

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.