Differenze tra le versioni di "Spostare da codice il mouse sullo schermo"

Da Gambas-it.org - Wikipedia.
Riga 25: Riga 25:
 
    
 
    
 
   Dim eventoX, eventoY, fine_evento As New Input_event   
 
   Dim eventoX, eventoY, fine_evento As New Input_event   
   Dim s As String
+
   Dim s, pw As String   
  Dim ss As String[]  
 
 
   Dim fl As File   
 
   Dim fl As File   
 
   Dim b As Byte   
 
   Dim b As Byte   
Riga 33: Riga 32:
 
  <FONT color=gray>' ''Individuiamo esattamente il file-device del mouse:''</font>
 
  <FONT color=gray>' ''Individuiamo esattamente il file-device del mouse:''</font>
 
   s = File.Load("/proc/bus/input/devices")   
 
   s = File.Load("/proc/bus/input/devices")   
   s = Replace$(s, "\n", " ") 
+
    
  ss = Split(s, " ", "", True) 
+
  <FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse...";''
   
+
  ' ''l'ultima parola della riga sarà il nome del file-device del mouse:''</font>
  For b = 0 To ss.Max 
+
  s = Scan(s, "*Handlers=mouse* * *")[2]
  <FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse..."
+
    
  ' ''e quindi raccogliamo l'ultima parola della riga medesima.''
 
' ''Tale parola sarà il nome del file-device del mouse:''</font>
 
    If ss[b] Like "Handlers=mouse*" Then s = ss[b + 1]
 
   Next 
 
 
 
  <FONT color=gray>''''''''''''''''</font>
 
 
 
 
 
 
  <FONT color=gray>' ''Per leggere il file-device individuato, bisogna avere i necessari permessi.''
 
  <FONT color=gray>' ''Per leggere il file-device individuato, bisogna avere i necessari permessi.''
 
  ' ''Pertanto, se non sono stati modificati i permessi del file-device, allora vengono modificati''
 
  ' ''Pertanto, se non sono stati modificati i permessi del file-device, allora vengono modificati''
 
  ' ''(bisognerà inserire la propria password !):''</font>
 
  ' ''(bisognerà inserire la propria password !):''</font>
 +
  Input pw
 +
 
 
   If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then   
 
   If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then   
     Shell "echo 'password' | sudo -S chmod 4777 /dev/input"  &/ s Wait   
+
     Shell "echo " & pw & " | sudo -S chmod 4777 /dev/input"  &/ s Wait   
 
   Endif   
 
   Endif   
 
      
 
      

Versione delle 03:55, 29 set 2017

Per poter spostare da codice sia orizzontalmente che verticalmente il puntatore del mouse all'interno dello schermo, si dovrà agire sul suo file-device /dev/input/mouse... .


Mostriamo di seguito un esempio, nel quale il puntatore viene spostato ripetutamente sia verso destra che in basso:

Public Struct timeval  
  tv_sec As Long     ' secondi
  tv_usec As Long    ' microsecondi
End Struct  
 
Public Struct input_event  
  tv As Struct Timeval  
  type As Short  
  code As Short  
  value As Integer  
End Struct  
 
Private Const EV_SYN As Short = 0  
Private Const EV_REL As Short = 2  
Private Const REL_X As Short = 0  
Private Const REL_Y As Short = 1  
Private Const SYN_REPORT As Short = 0  
 
 
Public Sub Main()  
 
 Dim eventoX, eventoY, fine_evento As New Input_event  
 Dim s, pw As String  
 Dim fl As File  
 Dim b As Byte  
  
 
' Individuiamo esattamente il file-device del mouse:
  s = File.Load("/proc/bus/input/devices")  
  
' Individuiamo la riga contenente il testo "Handlers=mouse...";
' l'ultima parola della riga sarà il nome del file-device del mouse:
  s = Scan(s, "*Handlers=mouse* * *")[2]
  
' Per leggere il file-device individuato, bisogna avere i necessari permessi.
' Pertanto, se non sono stati modificati i permessi del file-device, allora vengono modificati
' (bisognerà inserire la propria password !):
  Input pw
  
  If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then  
    Shell "echo " & pw & " | sudo -S chmod 4777 /dev/input"  &/ s Wait  
  Endif  
    
  
  fl = Open "/dev/input" &/ s For Write  
  If IsNull(fl) Then Error.Raise("Impossibile aprire il file-device !")  
  
' Assegna i dati per lo spostamento orizzontale del mouse sullo schermo:
  With eventoX  
    .type = EV_REL  
    .code = REL_X  
' Si assegna un valore positivo per lo spostamento a destra,
' un valore negativo per lo spostamento a sinistra:
    .value = 100  
 End With  
  
' Assegna i dati per lo spostamento verticale del mouse sullo schermo:
  With eventoY  
    .type = EV_REL  
    .code = REL_Y  
' Si assegna un valore positivo per lo spostamento in basso,
' un valore negativo per lo spostamento in alto:
    .value = 100  
  End With  
  
  With fine_evento  
    .type = EV_SYN  
    .code = SYN_REPORT  
    .value = 0  
  End With  
  
  For b = 1 To 5  
    Write #fl, eventoX As Input_event        ' Sposta il mouse orizzontalmente
    Write #fl, fine_evento As Input_event    ' Mostra lo spostamento del mouse 
    Wait 1  
    Write #fl, eventoY As Input_event        ' Sposta il mouse verticalmente
    Write #fl, fine_evento As Input_event    ' Mostra lo spostamento del mouse
    Wait 1  
  Next  
  
' Va in chiusura:
  fl.Close  
 
End