Téléchargé 5 fois
Vote des utilisateurs
0
0
Détails
Licence : Non renseignée
Mise en ligne le 14 novembre 2010
Langue : Français
Référencé dans
Navigation
Assigner une touche de raccourci à la fermeture d'un programme
Assigner une touche de raccourci à la fermeture d'un programme
Permet de sélectionner, un programme à fermer lors de l'action sur la touche ESC quelque soit l'application active.
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.
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
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
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 |
1 2 3 | Private Sub Cmd_Click() Unload Me End Sub |
Il faut que le prog ai le focus au moment de l'appui sur les touches
Une autre solution sachant que,
Source MSDN
Mettre donc Form.KeyPreview = True dans le projet
et le code suivant
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.
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.
et le code suivant
Code : | Sélectionner tout |
1 2 3 | Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 27 Then Unload Me ' Escape End Sub |
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
C'est le programme de jeu qui a le focus, donc le prog vb ne recoit pas les evenements clavier
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
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
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
Envoyé par Delbeke
Code : | Sélectionner tout |
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 |
Aller ou l'on veut et appuyer sur la touche Escape
et dire qu'on va donner des solutions à ces jeunes "branleurs" (dixit morgan47 ) pour flouer le prof d'info, c'est pas moral, tiens !!
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.