Spostare da codice il mouse sullo schermo
Da Gambas-it.org - Wikipedia.
Versione del 10 mag 2014 alle 17:52 di Vuott (Discussione | contributi)
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 As String Dim ss As String[] Dim fl As File Dim b As Byte ' Individuiamo esattamente il file-device del mouse: s = File.Load("/proc/bus/input/devices") s = Replace$(s, "\n", " ") ss = Split(s, " ", "", True) For b = 0 To ss.Max ' Individuiamo la riga contenente il testo "Handlers=mouse...", ' e quindi raccogliamo l'ultima parola della riga medesima. ' Tale parola sarà in nome del file-device del mouse: If ss[b] Like "Handlers=mouse*" Then s = ss[b + 1] Next ''''''''''' ' 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 !): If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then Shell "echo 'password' | 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