Se poi l'intento è quello di scrivere il codice più corto allora questo è più corto e usa meno funzioni:
Public Sub Form_Open()
Dim sRes As String
Try Shell "xset q" To sRes
If Val(Scan(sRes, "*LED mask: *\n*")[1]) = 1 Then Message.Warning("Attenzione il Bloc Maiusc è attivato")
End
Per il codice completo:
Public Sub Main()
Dim sRes As String
Try Shell "xset q" To sRes
Select Val(Scan(sRes, "*LED mask: *\n*")[1])
Case 0
Print "Nessun led acceso"
Case 1
Print "Bloc Maiusc Attivo"
Case 2
Print "Bloc Num Attivo"
Case 3
Print "Bloc Maiusc + Bloc Num Attivi"
End Select
End
Ragazzi dopo molto impegno e sudore ho Risolto!
ho copiato il codice di Gianluigi :rotfl: :rotfl: :rotfl:
in form Open
Public Sub VediTasti()
Dim sRes As String
Try Shell "xset q" To sRes
Select Val(Scan(sRes, "*LED mask: *\n*")[1])
Case 0
Print "Nessun led acceso"
Case 1
Print "Bloc Maiusc Attivo"
Case 2
Print "Bloc Num Attivo"
Case 3
Print "Bloc Maiusc + Bloc Num Attivi"
End Select
End
Public Sub Form_KeyRelease()
VediTasti
End
ps. non ditelo a Gianluigi ;D
Ragazzi dopo molto impegno e sudore ho Risolto!
...
:-[ Mi è sorto un dubbio, non sono sicuro di come il comando xset crea l'output.
E se può accadere che in qualche distro invece di due spazi dopo LED mask: la shell ne restituisca in numero diverso, pertanto visto che Val() non tiene conto ne degli spazi ne degli zero forse conviene variare il codice di Scan così:
Val(Scan(sRes, "*LED mask:*\n*")[1])
:ciao: