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 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") | ||
− | + | ||
− | + | <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> | |
− | + | s = Scan(s, "*Handlers=mouse* * *")[2] | |
− | <FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse..." | + | |
− | ' '' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<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 | + | 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