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

Signaler
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
-
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
-
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

15 réponses

Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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 !
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
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
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137 >
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

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
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1 >
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021

Merci vb95
je vais y jeter un oeil et je te tiendrai au courant
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1 >
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021

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
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137 >
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

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 )
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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 ...
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137 >
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

https://support.microsoft.com/fr-fr/help/12445/windows-keyboard-shortcuts
et tu auras tous les raccourcis dont Windows + V
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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 ...
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235 >
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

Il n'y a pas de quoi.
Bonne chance.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235 >
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

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 ...
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
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 ?
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
désolé, c'est vrais j'ai fait je me suis mal exprimé (c'est "définir" au lieu de "utiliser")
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
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