Oppure

Loading
23/04/09 8:17
Sal47
Buongiorno a tutti, sono alle prime armi con il VB6 e vi sarei grato per un un aiuto.

In un programma che sto preparando ho necessità di attivare via codice il tasto CapsLock e, sempre via codice, disattivarlo alla chiusura del programma.
Finora utilizzando un esempio trovato sul testo "I trucchi di VB" sono riuscito ad attivare il CapsLock all'avvio del programma.
Però non riesco a capire come fare a disattivarlo. Ho provato inserendo in Form Unload
istruzioni analoghe ma il risultato è sempre negativo.

Grazie a chiunque possa aiutarmi.
Riporto sotto il codice allegato e funzionante per la sola attivazione.

In "Generale":
________________________________________________________________
Sub SetCapsLockKey(ByVal newState As Boolean)
Const KEYEVENTF_KEYUP = &H20 ' e non &H2 come da pag. 176/177 trucchi vb
If CBool(GetKeyState(vbKeyCapital)) <> newState Then
keybd_event vbKeyCapital, 0, 0, 0
keybd_event vbKeyCapital, 0, KEYEVENTF_KEYUP, 0
End If
End Sub
--------------------------------------------------------------------------
Private Sub Form_Load()
' istruzione per premere e rilasciare via codice il CapsLock
SetCapsLockKey (vbKeyCapital)
' e se era spento correggere la casella di testo relativa
If txtCapsLock <> "Acceso" Then txtCapsLock = "Acceso"
End Sub
_________________________________________________________________
E in un "modulo bas":

' API per conoscere lo stato dei tasti Lock
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
' API per attivare lo stato del tasto Capslock
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
_________________________________________________________________
Ancora grazie.
aaa
23/04/09 9:29
theprogrammer
Ma perche' attivare il CapsLock?

Devi accettare input solo in maiuscolo? Allora trasforma le stringhe dopo (o durante) l'input stesso a prescindere dal Caps Lock ...
aaa
23/04/09 9:56
lorenzo
concordo, così almeno hai anche più sicurezza per l'input dato che nulla impedisce all'utente di disattivare il capslock magari a metà di un inserimento....sempre che sia per questo motivo che ti serve :rotfl:
aaa
23/04/09 14:13
GrG
Se ti serve solo per il testo allora convertilo direttamente usando la funzione ucase() ...
aaa
23/04/09 17:25
theprogrammer
Elimina la riga

Text1(Index) = UCase(Mid$(Chr$(KeyAscii), 2, 1))

e mettici

KeyAscii = Asc(UCase(Chr$(KeyAscii)))
aaa
24/04/09 5:54
Sal47
OK Perfetto - Ho sostituito la mia istruzione con quella suggerita da TheProgrammer e funziona benissimo.
Comunque, visto che ho impiegato una settimana ad aggirare l'ostacolo per attivare
il CapsLock via codice, c'è il sistema per disattivarlo considerato che lo stesso
problema potrebbe presentarsi, ad es., per NumLock ?
Ancora grazie.
aaa
24/04/09 8:33
theprogrammer
Anche per il NumLock non serve ...
aaa