begin process at 2012 02 16 11:37:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Périphériques

 > RAJOUTEZ DES RACCOURCIS CLAVIER DANS VOS PROGRAMMES !!!

RAJOUTEZ DES RACCOURCIS CLAVIER DANS VOS PROGRAMMES !!!


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Périphériques Classé sous :raccourcis, clavier Niveau :Initié Date de création :08/08/2005 Vu :7 232

Auteur : soldier8514

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

ce code permet d'intercepter les racourcis clavier _ voici un exemple qui retrouve la combinaison CTRL SHIFT A tapée au clavier _

Source

  • 'Dans le Form :
  • '--------------
  • Private Sub Form_Load()
  • 'on crochete le clavier pour toujours savoir ce kil sy passe
  • hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardLowLevelProc, App.hInstance, 0&)
  • End Sub
  • Private Sub Form_Unload(Cancel As Integer) 'quand on quitte
  • UnhookWindowsHookEx hHook
  • End Sub
  • '-----------------------------------
  • 'Dans un module:
  • '--------------
  • Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
  • Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
  • Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
  • Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  • Public hHook As Long
  • Public Const WH_KEYBOARD_LL = 13
  • Public Const VK_RWIN = &H5B
  • Public Const VK_LWIN = &H5C
  • Public Type HOOKSTRUCT
  • vkCode As Long
  • scanCode As Long
  • flags As Long
  • time As Long
  • dwExtraInfo As Long
  • End Type
  • Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
  • (Destination As Any, Source As Any, ByVal Length As Long)
  • Dim vk1 As Long
  • Dim vk2 As Long
  • Dim vk3 As Long
  • Public Function KeyboardLowLevelProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  • Dim p As HOOKSTRUCT ' variable pour récupérer le vk code
  • 'si idhook < 0 alors pas de traitement
  • If idHook < 0 Then
  • 'appeler le hook suivant
  • KeyboardLowLevelProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
  • Else
  • 'copie la structure de lParam
  • CopyMemory p, ByVal lParam, Len(p)
  • vk1 = vk2
  • vk2 = vk3
  • vk3 = p.vkCode
  • If vk1 = 162 And vk2 = 160 And vk3 = 65 Then MsgBox "Combinaison CTRL-SHIFT-A pressée au clavier"
  • '( CTRL a le virtual key code 162
  • ' SHIFT a le virtual key code 160
  • ' A a le virtual key code 65 )
  • 'appeler le hook suivant
  • KeyboardLowLevelProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
  • End If
  • End Function
'Dans le Form :
'--------------

Private Sub Form_Load()
    'on crochete le clavier pour toujours savoir ce kil sy passe
    hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardLowLevelProc, App.hInstance, 0&)

End Sub

Private Sub Form_Unload(Cancel As Integer) 'quand on quitte

    UnhookWindowsHookEx hHook

End Sub

'-----------------------------------
'Dans un module:
'--------------

Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long
Public Const WH_KEYBOARD_LL = 13
Public Const VK_RWIN = &H5B
Public Const VK_LWIN = &H5C
Public Type HOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)

Dim vk1 As Long
Dim vk2 As Long
Dim vk3 As Long

Public Function KeyboardLowLevelProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim p As HOOKSTRUCT ' variable pour récupérer le vk code
'si idhook < 0 alors pas de traitement
If idHook < 0 Then
'appeler le hook suivant
KeyboardLowLevelProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
'copie la structure de lParam
CopyMemory p, ByVal lParam, Len(p)

vk1 = vk2
vk2 = vk3
vk3 = p.vkCode


If vk1 = 162 And vk2 = 160 And vk3 = 65 Then MsgBox "Combinaison CTRL-SHIFT-A pressée au clavier"
'( CTRL a le virtual key code 162
'  SHIFT a le virtual key code 160
' A a le virtual key code 65 )

'appeler le hook suivant
KeyboardLowLevelProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function


 Conclusion


voilà j'ai bricolé ça pour implémenter le racourci clavier dans un soft de capture d'écran _ comme ça je peus faire des captures d'écran par simple pression dune combinaison de touches pendant un jeu vidéo par exemple



 Sources du même auteur

Source avec Zip Source avec une capture URL2DOWN ACTIVEX _ COMPOSANT DÉDIÉ AU TELECHARGEMENT HTTP
Source avec Zip Source avec une capture CONVERTIR LES IMAGESDE CD/DVD ALCOHOL 120 (.MDF), BLINDWRIT...
Source avec Zip Source avec une capture 3NITY IMAGE STUDIO ACTIVEX SDK _ COMPOSANT DÉDIÉ À L'IMAGERI...
Source avec Zip GRAVEZ VOS CDS DE TOUTES LES FACONS POSSIBLES!!!
Source avec Zip Source avec une capture CDTRACKSXTRACTOR V1.0 POUR EXTRAIRE LES PISTES DES CD AUDIO...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) LIRE ET CHANGER LA LUMINOSITÉ DES ÉCRANS LCD (DE PORTABLE) C... par ShareVB
Source avec Zip Source avec une capture VISUAL BASIC ET MICROPROCESSEUR MBED par ccllee
Source avec Zip Source avec une capture Source .NET (Dotnet) VARIATEUR SECTEUR 11 VOIES SUR PORT SERIE OU USB par mays
Source avec Zip Source avec une capture PILOTER LES PORTS PARALLELES. par djebbipgm
Source avec Zip PILOTER LES PORT COMM DE PC par djebbipgm

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture VBA MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source avec une capture DÉMON D'ÉCOUTE par 8Tnerolf8
Source avec Zip Source avec une capture [VBS] SHORTCUTREMOVER OUTIL POUR SUPPRIMER AUTOMATIQUEMENT L... par hackoo
Source avec Zip Source avec une capture ( CHANGER / AJOUTER/ SUPPRIMER ) LA LANGUE DU CLAVIER DANS ... par chieur

Commentaires et avis

Commentaire de DARKSIDIOUS le 09/08/2005 08:39:24 administrateur CS

Une petite précision : les hook sont très instables sous VB en mode éxécution : ne cliquez pas sur le bouton "Stop" de VB lors de l'éxécution d'un hook, sinon, vous plantez l'IDE. Quittez plutôt proprement le prog par le bouton de fermeture.

Sinon, ton code en sauvera sûrement plus d'un ;)

DarK Sidious

Commentaire de bouv le 09/08/2005 10:38:07

Ouais, effectivement cela peut etre très utile.
La seule chose qui m'embette c'est cette partie du code :

vk1 = vk2
vk2 = vk3
vk3 = p.vkCode

Car  :
1°- Si j'appui sur SHIFT avant CTRL, la combinaison ne fonctionnera pas.
2°- Il faut que la combinaison soit réalisée très rapidement (voir exemple ci-dessous)

Essai de rajouter le code suivant (la ligne juste sous vk3 = p.vkCode)
:
        frmMain.Label1.Caption = vk1
        frmMain.Label2.Caption = vk2
        frmMain.Label3.Caption = vk3

Et tu comprendra pourquoi je dis qu'il faut que la combinaison soit réalisée très rapidement.

J'ai trouvé une petite solution, qui serait de mettre
        If Not p.vkCode = vk3 Then
            vk1 = vk2
            vk2 = vk3
            vk3 = p.vkCode
        End If

Seulement, si je fais CTRL, puis SHIFT, puis A, il me valide la combinaison, alors que c'est bien différent de CTRL+SHIFT+A.
Quelqu'un a-t-il une solution ?

Commentaire de soldier8514 le 09/08/2005 13:44:33

Bien vu DARKSIDIOUS _ ça ma paru tellement évident que je n'ai pas pensé à le préciser _

bouv<< quand tu fais [Alt F4] _ tu commences par F4 ou bien par AlT ??? Le but est bien evidemment ici de faire un racourci clavier conventionnel ...

Commentaire de bouv le 09/08/2005 13:55:02

Oui je suis bien d'accord, mais tu sais des fois on fait les choses tellement vite que pour CTRL+ALT+A on peut inverses l'ordre entre CTRL et ALT (ce qui pour les raccourcis Windows ne pose pas de problème).

De plus cela ne résoud pas le problème de la vitesse à laquelle doit être executée l'opération.

Sinon, j'avais oublié de noter :
- Code simple, clair, concis et bien commenté ; même si j'aurais préféré qu'il soit indenté (peut être à cause du site ?)
9/10 pour les petits défaut dont j'ai parlé plus haut.

Commentaire de soldier8514 le 12/08/2005 17:36:27

je pense en faire un ocx _faut dire que mettre 3 lignes de codes dans une fiche c'est déjà trop pour moa ... alors si je peus réduire à 2...  ;)

Commentaire de draluorg le 17/08/2005 14:15:06

Salut,

Pourquoi ne pas simplement a chaque fois que une des trois touches est enfoncee verifier si les deux autres le sont aussi ?

Commentaire de soldier8514 le 17/08/2005 15:20:26

on peut le faire avec GetKeyState , suffit 2 modifier 2 ou 3 lignes

Commentaire de bouv le 17/08/2005 15:24:33

Oui une source a été déposée avec cette API il y a qq jour...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

BLocage raccourcis clavier [ par ezekiel95 ] Bonjour à tous!!!Qq'un saurait il comment faire pour bloquer/reaffecter des raccourcis clavier tq ctrl+alt+sup ou ctrl++esc?Je me suis longuement rens Raccourcis clavier => copier coller ??? [ par goldensteph ] Est-ce que quelqu'un connait un moyen de faire un raccourcis clavier pour copier coller... (j'ai coché la case dans le menu mais ca fonctionne pas !) Raccourcis clavier... [ par DadaPik ] Comment faire des raccourcis clavier (Alt+F1, Alt+F2...)Je pensais que c'était avec l'événement KeyPress mais apparement non... Et ou pourrais-je trou fenetre toujours active [ par kawa11 ] salut,j'ai un fenetre qui reste toujours au premier plan dans laquelle des boutons sont actives par des raccourcis clavier, mais je suis obligé de cli coller dans autre application [ par jetest ] bsoir à tousje voudrais copier un texte d'un textbox et le coller dans une autre application, mais je ne parviens pas a coller ailleur que dans mon ap Liste des raccourcis clavier utilisée ou test un raccourci clavier (VBA pour Word 2003) [ par Polack77 ] &nbsp;&nbsp;&nbsp; Salut tout le monde. Ca roule? Moi c cool (bient&#244;t le weekend ) &nbsp;&nbsp;&nbsp; Voila mon probl&#232;me: &nbsp;&nbsp;&nbsp; Inhibation de raccourcis clavier [ par gdu ] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Salut &#224; tous,Comment verrouiller mon application (VB6) afin qu'un utilis raccourci clavier et threads [ par julien__ ] Bonjour, je suis sous vb.net 2003,je cherche à faire des raccourcis clavier disponibles dans d'autres applications... je voudrais faire tourner l'appl [vb express] Raccourcis clavier dans windows [ par 85bmx85 ] Bonjour tout le monde, Comme vous le savez tous il est possible dans windows d'attribuer a un programme un raccourci clavier pour pouvoir le lancer ra raccourcis clavier personnalisables [ par 85bmx85 ] Salut a tous, je recherche un moyen qui permettrait a l'utilisateur de choisir lui meme les raccourcis clavier permettant telle ou telle action un peu


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,555 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales