Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 09 Aprile 2014, 22:25:08

Titolo: evento keypress in applicazione console
Inserito da: allegfede - 09 Aprile 2014, 22:25:08
salve, come faccio ad avere la lista degli eventi in una applicazione console?

di solito facciamo pulsante destro sull'oggetto (form, pulsante, etc.) e selezioniamo dal menu contestuale l'evento da "codificare" ....

ma in una applicazione consolle dove facio pulsante destro?

... la domanda sorge dall'idea di intercettare la pressione del pulsante Q per terminare un demone ...
Titolo: Re: evento keypress in applicazione console
Inserito da: vuott - 09 Aprile 2014, 23:24:48
... lista degli eventi in una applicazione console?
Scusami, intendi applicazione "a riga di comando" ?
Titolo: Re: evento keypress in applicazione console
Inserito da: allegfede - 09 Aprile 2014, 23:27:06
esatto :D
Titolo: Re: evento keypress in applicazione console
Inserito da: vuott - 10 Aprile 2014, 02:02:35
Se il tuo fine è quello di intercettare in un applicazione a riga di comando il momento in cui l'utente preme il tasto " Q " della sua tastiera, proporrei un codice di questo genere:
Codice: gambas [Seleziona]

Private pr As Process
Private lett As New String[]


Public Sub Main()

 Dim s As String
 Dim ss As New String[]
 Dim j As Short


   s = File.Load("/proc/bus/input/devices")
   s = Replace$(s, "\n", " ")
   ss = Split(s, " ", "", True)

   For j = 0 To ss.Max
' Individuiamo la riga contenente il testo "Handlers=sysrq", e quindi raccogliamo l'ultima parola della riga medesima.
' Tale parola sarà in nome del file-device della tastiera:
     If ss[j] = "Handlers=sysrq" Then s = ss[j + 2]
   Next
 
' Per leggere il file-device individuato, bisogna avere i necessari permessi. Essi vengono quindi modificati.
' La parola "mia_password" della riga seguente è la password personale dell'utente:
   Shell "echo mia_password | sudo -S chmod 4777 /dev/input" &/ s Wait
 
 
' Finalmente il file-device viene gestito mediante "Process":
   pr = Exec ["cat", "/dev/input" &/ s] For Read As "processo"

End


Public Sub processo_Read()   ' Ogni volta che viene premuto un tasto della tastiera....

 Dim b As Byte

'...legge i dati provenienti dal file-device della tastiera:
   Read #pr, b

   lett.Add(CStr(b))

   If lett.Count = 144 Then
    
' Se si preme il tasto della lettera "Q"....
     If lett[20] = "16" Then Print "Intercettato tasto "; Quote(" Q "); " della tastiera !"

     lett.Clear

   Endif

End


   :-X
Titolo: Re: evento keypress in applicazione console
Inserito da: allegfede - 11 Aprile 2014, 13:27:41
grazie .... fa alla bisogna ..... :D