Autore Topic: evento keypress in applicazione console  (Letto 419 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
evento keypress in applicazione console
« il: 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 ...
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: evento keypress in applicazione console
« Risposta #1 il: 09 Aprile 2014, 23:24:48 »
... lista degli eventi in una applicazione console?
Scusami, intendi applicazione "a riga di comando" ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: evento keypress in applicazione console
« Risposta #2 il: 09 Aprile 2014, 23:27:06 »
esatto :D
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: evento keypress in applicazione console
« Risposta #3 il: 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
« Ultima modifica: 17 Novembre 2014, 16:06:24 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: evento keypress in applicazione console
« Risposta #4 il: 11 Aprile 2014, 13:27:41 »
grazie .... fa alla bisogna ..... :D
se corri, morirai stanco (motto degli sniper)