IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Assigné une touche de raccourci a un bouton.


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut Assigné une touche de raccourci a un bouton.
    Bonjour,
    j'aimerai savoir si il est possible d'asigner une touche a un raccourci ou un bouton.
    J'explique, je voudrai faire un petit programme pour permettre de cacher une fenetre particulière lorsque l'on appui sur une touche(c pour cacher les jeux lorsque je suis en cours et qu'un prof passe lol)
    pour cacher la fenetre je devrai m'en sortir.
    Mais j'aimerai savoir si il est possible d'assigné une touche, lorsque je suis sur le jeux et qu'un prof passe, je voudrai lorsque l'on appui sur une touche faire une action.
    Est ce possible?
    Merci d'avance.

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Avec les api de windows , ca devrait pouvoir se faire. En vb, recuperer un evenement sur l'appui d'une touche sans que vb aie le focus me paraît pour le moins difficile.

  3. #3
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Bonsoir

    sur une Form
    créer un popmenu avec Créateur de menus comme suit
    caption = Arret du prog
    Name = Cmds ...
    ... caption = Touche Ctrl+W
    ... Name = Cmd
    ... Shortcut = Ctrl+W

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Cmd_Click()
    Unload Me
    End Sub
    Lancer le prog, appuis des touches Ctrl+W, le prog prend fin.

    Il faut que le prog ai le focus au moment de l'appui sur les touches

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Une autre solution sachant que,
    Source MSDN
    KeyPreview, propriété


    Renvoie ou définit une valeur qui détermine si les événements du clavier pour les feuilles sont appelés avant ceux destinés aux contrôles. Les événements du clavier sont KeyDown, KeyUp et KeyPress.

    Syntaxe

    object.KeyPreview [= boolean]

    La syntaxe de la propriété KeyPreview comprend les éléments suivants :

    Élément Description
    object Expression d'objet qui prend la valeur d'un objet figurant dans la liste "Application".
    boolean Expression booléenne qui spécifie la façon dont les événements sont reçus, comme indiqué dans la section Valeurs.


    Valeurs

    L'élément boolean peut prendre les valeurs suivantes :

    Valeur Description
    True La feuille reçoit les événements du clavier avant le contrôle actif.
    False (Valeur par défaut) Le contrôle actif reçoit les événements du clavier, mais pas la feuille.


    Remarques

    Vous pouvez utiliser la propriété KeyPreview pour créer une procédure de gestion du clavier destinée à une feuille. Par exemple, lorsqu'une application met en œuvre des touches de fonction, il est préférable de traiter les frappes de touches au niveau de la feuille, au lieu d'écrire un code pour chaque contrôle susceptible de recevoir les événements du clavier.

    Si une feuille n'a pas de contrôles visibles et actifs, elle reçoit automatiquement tous les événements du clavier.

    Pour gérer les événements du clavier au niveau de la feuille uniquement et empêcher que les contrôles reçoivent ces événements, affectez la valeur 0 à KeyAscii dans l'événement KeyPress de la feuille et à KeyCode dans l'événement KeyDown de la feuille.

    Note Certains contrôles interceptent les événements du clavier, de sorte que la feuille ne les reçoit pas. C'est le cas, par exemple, de la touche ENTRÉE lorsque le focus est sur un contrôle CommandButton, et des touches de direction lorsque le focus est sur un contrôle ListBox.
    Mettre donc Form.KeyPreview = True dans le projet
    et le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then  Unload Me ' Escape
    End Sub

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je suis d'accord avec toi, ProgElec, mais çà ne resouldra pas le problème de Morgan 47 à savoir : affecter une touche au masquage d'un programme de jeu, pas toucher au programme vb lol
    C'est le programme de jeu qui a le focus, donc le prog vb ne recoit pas les evenements clavier

  6. #6
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut

    J'ai mal interpreté la demande, par contre il faut que je recherche dans mes sources car j'ai deja fait ce type de prog pour fermer des progs qui etaient lancés par un colégue indelicat pour surveiller mon pc (au boulot), mais je devai passer par les fonction EnumWindows, GetWindowText et SendMessage

    Ce soir je n'ai plus toute ma tête , mais promis je vai retrouver
    Bonsoir

  7. #7
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    merci de vos réponces a tous
    vous devez vous dire quel branleur ce jeune, lol je vous le fair pas dire.
    Mais quand on passe 8 heure par jous devant l'ordi faut bien se détendre entre les interclasse :-P

  8. #8
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par Delbeke
    En vb, recuperer un evenement sur l'appui d'une touche sans que vb aie le focus me paraît pour le moins difficile.
    Une form et un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    '-- Code module
    Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
    Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
     
    Declare Function SetTimer Lib "User32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Declare Function KillTimer Lib "User32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
    Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As Integer
     
    Sub TimerProc(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
        If GetAsyncKeyState(vbKeyEscape) <> 0 Then
            SetWindowPos Form1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
            SetWindowPos Form1.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
        End If
    End Sub
     
     
    '-- Code Form
    Private Sub Form_Load()
       SetTimer Me.hWnd, 0, 1, AddressOf TimerProc ' on crée un timer
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
        KillTimer Me.hWnd, 0 '-- arreter le timer
    End Sub
    Lancer l'appli
    Aller ou l'on veut et appuyer sur la touche Escape

  9. #9
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Merci ThierryAIM
    Bien que je ne suis pas le demandeur, pour le Fun
    KillRacourci.zip (2.9Ko)

  10. #10
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    et dire qu'on va donner des solutions à ces jeunes "branleurs" (dixit morgan47 ) pour flouer le prof d'info, c'est pas moral, tiens !!

  11. #11
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    héhé, on est pas des branleurs d'abord
    et puis ce n'est pas des prof d'info , c'est des prof de conception par informatique.
    du dessin indu quoi.
    Et bon quand on y passe toutes la journée c'est barbant

    En tout cas merci a vous, je teste en début de semaine et je vous tiens au courant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une touche de raccourci
    Par belukrin dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 03/03/2009, 02h49
  2. Réponses: 3
    Dernier message: 10/03/2008, 22h33
  3. Activer un bouton en appuyant sur une touche du clavier
    Par brasco06 dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 16/02/2006, 23h47
  4. [] Raccourci clavier pour bouton d'une barre d'outil
    Par Sébastien dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/03/2003, 17h02
  5. faire de la touche F1 une touche de raccourci?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/08/2002, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo