Buongiorno a tutti,
avendo la necessità in un mio programma di verificare se attivo il tasto Caps Lock (Maiuscole)
ho fatto una ricerca su Google non avendo trovato niente sul nostro Forum, mi sono imbattuto
su un post della Mailing ufficiale dove un utente faceva riferimento ad un vecchio programma di
un utente di questo Forum (Fsurfing) che aveva utilizzato questo codice
PUBLIC SUB Main()
DIM sShellOutput AS String
DIM iKeyLocks AS Integer
SHELL "xset q | grep 'LED mask:'" TO sShellOutput
sShellOutput = Replace(sShellOutput, " ", "")
iKeyLocks = Val(Split(sShellOutput, ":")[3])
SELECT iKeyLocks
CASE 1
PRINT "Caps Lock is ON"
CASE 2
PRINT "Num Lock is ON"
CASE 3
PRINT "Caps Lock is ON"
PRINT "Num Lock is ON"
END SELECT
END
La mia domanda è: si deve ricorrere obbligatoriamente alla Shell per verificarne lo stato?
Non ho trovato altre soluzioni
Non so se questo può servirti:
Private $bMaiusc As Boolean
Public Sub Form_KeyRelease()
If Key.Code = Key.CapsLock Then
$bMaiusc = Not $bMaiusc
Endif
Print $bMaiusc
End
:ciao: :ciao:
Avevo fatto un errore, scusa :-[
La mia esigenza è verificare se all'avvio del programma il tasto maiuscole è attivo.
Grazie comunque per i suggerimenti, si apprende sempre qualcosa di interessante.
Questo potrebbe andare bene?:
Alcune precisazioni occorre attivare il componente gb.desktop dare alla TextBox 1 px di altezza e 1 di larghezza e aumentare i tempi della sospensione ad almeno 0.5.
Public Sub Form_Open()
Dim s As String
With TextBox1
.Border = False
.Background = Color.Transparent
.Foreground = Color.Transparent
End With
Me.Show
Wait 0.5
Desktop.SendKeys("[a]")
Wait 0.5
s = TextBox1.Text
Print s
If s = "A" Then Message.Warning("ATTENZIONE: Il blocco maiuscole è attivo")
TextBox1.Delete
End
:ciao: :ciao:
Così è meglio