irrypetagoyen
Messages postés8Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention11 février 2009
-
9 févr. 2009 à 22:28
irrypetagoyen
Messages postés8Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention11 février 2009
-
11 févr. 2009 à 21:01
Bonjour,
..... pour un vrai débutant....
J'exécute ne routine sans fin dans une boucle while 1=1 .......wend.
Je voudrais sortir de cette boucle, à l'appui d'une touche quelconque.
Comment faire ?
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 10 févr. 2009 à 00:04
Bonjour
Je peux te fournir la solution suivante, malheureusement elle ne fonctionne que sur l'appui d'une touche de ton choix, ici la touche F4.
Colle le code suivant dans un module, exécute la procédure test(), puis appuie la touche F4.
<hr />
Option Explicit
Declare Function RegisterHotKey Lib "User32" (ByVal hwnd As Long, _
ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "User32" (ByVal hwnd As Long, ByVal id As Long) As Long
Declare Function PeekMessage Lib "User32" Alias "PeekMessageA" (lpMsg As msg, _
ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, _
ByVal wRemoveMsg As Long) As Long
Declare Function WaitMessage Lib "User32" () As Long
Type POINTAPI
x As Long
y As Long
End Type
Type msg
hwnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Sub test()
Dim Message As msg
Dim ret As Long
' Enregistre la touche F4 comme hotkey
ret = RegisterHotKey(Application.hwnd, &HBFFF&, &H0, vbKeyF4)
Do
' attend un message
WaitMessage
' Verifie si c'est un message Hotkey
If PeekMessage(Message, Application.hwnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
Call UnregisterHotKey(Application.hwnd, &HBFFF&)
Exit Do
End If
' permet l'exécution d'autres procédures
DoEvents
Loop
' annule l'enregistrement de la hotkey
Call UnregisterHotKey(Application.hwnd, &HBFFF&)
MsgBox "Terminé"
End Sub