Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Robot java gestione mouse

    codice:
    Robot roby = new Robot();		
    	
    		 roby.keyPress(524);
    		 roby.keyRelease(524);
    		 roby.mouseMove(1246,78);
    		 roby.mousePress(16);
    		 roby.mouseRelease(16);
    Volevo creare una macro che mi arrestava il pc. Ma gli eventi si impallano quasi sempre. Avete dei consigli?

  2. #2
    ho risolto bastava addormentare un pò il thread per scandire meglio le istruzioni.
    codice:
    Thread.sleep(200);
    e dopo questa collasso pur'io

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Thread.sleep è ok. Nota però che Robot ha delay(int ms) che diversamente da sleep non lancia InterruptedException.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    ci avevo già provato facendo così :
    codice:
    public static void click(int x, int y) throws AWTException{		Robot roby = new Robot();
    		roby.mouseMove(x , y);
    		 roby.mousePress(16);
    		 roby.mouseRelease(16);
                     roby.deelay(2000);
    		
    	}
    ma lo stesso tra un click ed un altro s'impallava.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paolovox Visualizza il messaggio
    codice:
    public static void click(int x, int y) throws AWTException{		Robot roby = new Robot();
    		roby.mouseMove(x , y);
    		 roby.mousePress(16);
    		 roby.mouseRelease(16);
                     roby.deelay(2000);
    		
    	}
    ma lo stesso tra un click ed un altro s'impallava.
    Io metterei un delay di es. 30 ms tra press e release.

    Inoltre è bene se metti i nomi delle costanti in InputEvent ... non valori letterali es. 16. Tra l'altro è meglio se leggi bene la documentazione di mousePress/mouseRelease. 16 è InputEvent.BUTTON1_MASK che da documentazione, dice che è anche accettato ma poi dice:

    "However, it is recommended to use InputEvent.BUTTON1_DOWN_MASK, InputEvent.BUTTON2_DOWN_MASK, InputEvent.BUTTON3_DOWN_MASK instead."

    Cioè sarebbe meglio se usi InputEvent.BUTTON1_DOWN_MASK.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Ecco una stupida macro che spegne il pc.
    codice:
    import java.awt.AWTException;import java.awt.MouseInfo;
    import java.awt.Point;
    import java.awt.PointerInfo;
    import java.awt.Robot;
    public class RobotMio {
    	
    	public static void click(int x, int y) throws AWTException{
    		Robot roby = new Robot();
    		roby.mouseMove(x , y);
    		 roby.mousePress(16);
    		 roby.mouseRelease(16);
    		}
    	
    	public static void press(int x) throws AWTException{
    		Robot roby = new Robot();
    		roby.keyPress(x);
    		 roby.keyRelease(x);
    	}
    	
    	public static void posizioneMouse() throws AWTException{
    		PointerInfo p = MouseInfo.getPointerInfo();
    		System.out.println(p.getLocation());
    		}
    	
    	public static void main(String[] args) throws AWTException, InterruptedException {
    		
    		RobotMio.posizioneMouse();
    		Thread.sleep(200);
    		RobotMio.press(524);
    		Thread.sleep(200);
    		RobotMio.click(1246,80);
    		Thread.sleep(200);
    		RobotMio.click(1239,177);
    		 }
    }
    Grazie per la puntualizzazione

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paolovox Visualizza il messaggio
    Ecco una stupida macro che spegne il pc.
    Dipendentemente dal S.O., ci sono sicuramente approcci migliori per spegnere il PC programmaticamente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    sicuramente da shell. La mia era semplice curiosità sulla libreria Robot

  9. #9
    ecco la stessa macro in un file .bat

    codice:
    @echo off
    
    
    
    echo.
    echo		 MACRO AUTOSPEGNIMENTO
    echo.
    :inizio 
    set /p input=Vuoi spegnere il pc?[s/n]
    
    
    if %input%==s goto spegnimento
    if %input%==n goto exit
    if %input% neq s goto error
    if %input% neq n goto error
    :spegnimento
    
    
    set /p tempo=Tra quanto tempo?
    
    
    shutdown /s /t %tempo%
    
    
    :error
    echo Le scelte sono [s,n]
    goto inizio
    
    
    :exit
    exit

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paolovox Visualizza il messaggio
    ecco la stessa macro in un file .bat
    Sì ok .... io comunque prima mi riferivo al fatto che se vuoi farlo da Java, è perfettamente possibile invocare script o eseguibili del sistema o di terze parti da Java (ad esempio l'eseguibile shutdown.exe).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.