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

codice:
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
grazie anche a te gibra
ma ultilizzare il UnhookWindowsHookEx da grossi problemi in Ripristino.

comunque questo è un esempio d'uso.

codice:
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
grazie ancora... CHIUDO