grazie ragazzi per le informazioni, non mi aspettavo niente di meno
sopratutto a morocarlo
il comando per Intercetta Tastiera GetAsyncKeyState è quello che cercavo, +o-
questo è quello che ho realizzato GetAsyncKeyState
grazie anche a te gibracodice:Rem FORM1 ¦------------------------------------------ Option Explicit Rem CheckBox "check1" Rem ListBox "List1" Rem Timer "Timer1" Rem dichiarazione libreai abbinata Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub Check1_Click() Rem attiva e disattiva intercettazione Timer1.Interval = 100 'controllo ravvicinato If Check1.Value = 1 Then Rem cancella lista e inizializza List1.Clear List1.AddItem "inizio", 0 Timer1.Enabled = True ' attiva controllo Else Rem termina lista List1.AddItem "fine", 0 Timer1.Enabled = False ' disattiva controllo End If End Sub Private Sub Timer1_Timer() Rem ricerca tasto premuto Dim I As Integer Rem Costanti dei codici dei tasti vbKeyA Rem ricerca TASTI speciali Tastiera (Tasto BACKSPACE ~ Tasto della Guida) For I = 8 To 47 Step 1 If GetAsyncKeyState(I) Then ' intercettazione tasto List1.AddItem "SPEC " + Str(I), 0 'visualizza tasto premuto End If Next I Rem ricerca TASTI standard Tastiera (Tasto 0 ~ Tasto Z) For I = 48 To 90 Step 1 If GetAsyncKeyState(I) Then ' intercettazione tasto List1.AddItem "STAN " + Str(I), 0 'visualizza tasto premuto End If Next I Rem ricerca TASTI NumPed Tastiera (Tasto Num0 ~ Tasto Num/) For I = 96 To 111 Step 1 If GetAsyncKeyState(I) Then ' intercettazione tasto List1.AddItem "NumP " + Str(I), 0 'visualizza tasto premuto End If Next I Rem ricerca TASTI Funzione Tastiera (Tasto F1 ~ Tasto F12/) For I = 112 To 127 Step 1 If GetAsyncKeyState(I) Then ' intercettazione tasto List1.AddItem "Funz " + Str(I), 0 'visualizza tasto premuto End If Next I End Sub
ma ultilizzare il UnhookWindowsHookEx da grossi problemi in Ripristino.
comunque questo è un esempio d'uso.
grazie ancora... CHIUDOcodice:Rem Form1 ¦------------------------------------------------------ Option Explicit Rem CheckBox "check1" Rem ListBox "List1" Private Sub Check1_Click() Rem attiva o disattiva intercettazione If Check1.Value = 1 Then Rem attivata intercettazione hook = SetWindowsHookEx(13, AddressOf myfunc, App.hInstance, 0) List1.Clear List1.AddItem "inizio", 0 Else Rem disattivata intercettazione UnhookWindowsHookEx hook List1.AddItem "fine", 0 End If End Sub Private Sub Form_Unload(Cancel As Integer) Rem chiusura programma UnhookWindowsHookEx hook End End Sub Rem Module ¦----------------------------------------------------- Rem dichiarazioni Librerie abbinate Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public Declare Function SetWindowsHook Lib "user32" Alias "SetWindowsHookA" (ByVal nFilterType As Long, ByVal pfnFilterProc As Long) As Long Public 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 Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Rem dichiarazione variabile Ambiantale Public hook As Long Rem dichiarazione tipologia ambientale Type HookStruct vkCode As Long scancode As Long flags As Long time As Long dwExtraInfo As Long End Type Rem funzione d'intercettazione tastiera Public Function myfunc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim kybd As HookStruct myfunc = True If code = 0 And wParam <> 257 Then CopyMemory kybd, ByVal lParam, Len(kybd) Form1.List1.AddItem Str(kybd.vkCode) + " " + Chr(kybd.vkCode), 0 myfunc = CallNextHookEx(hook, code, wParam, lParam) ElseIf code < 0 Then myfunc = CallNextHookEx(hook, code, wParam, lParam) End If End Function![]()
![]()

Rispondi quotando