Dritte sulla creazione di un piccolo programma

di il
6 risposte

Dritte sulla creazione di un piccolo programma

Ciao a tutti, vorrei creare un programmino che interagisca con il puntatore del mouse e faccia dei click ripetitivi in un determinato punto dello schermo.
E' possibile fare ciò in java? Se si, mi dareste qualche dritta su quali classi utillare e/o dove cercare informazioni utili?

p.s. sono un neofita, ho fatto un corso java qualche anno fa e vorrei cimentarmi nella creazione di piccoli tools informatici

Grazie a tutti

6 Risposte

  • Re: Dritte sulla creazione di un piccolo programma

    ilp4zz0 ha scritto:


    E' possibile fare ciò in java?
    Tecnicamente sì, devi vedere la classe java.awt.Robot .
  • Re: Dritte sulla creazione di un piccolo programma

    Stupendo, grazie.. funziona molto bene

    Per puntare il mouse in una determinata posizione ho utilizzato le coordinate x ed y (credo dei pixel dello schermo) a partire dall'angolo in alto a sinistra.. è possibile invece determinare questi punti x ed y relativi ad una finestra o ad un file aperti in un qualsiasi punto dello schermo?
  • Re: Dritte sulla creazione di un piccolo programma

    ilp4zz0 ha scritto:


    è possibile invece determinare questi punti x ed y relativi ad una finestra o ad un file aperti in un qualsiasi punto dello schermo?
    No, con la sola API di JavaSE non è possibile "enumerare" o comunque scoprire quali/dove sono le finestre di ALTRI processi (nativi o Java o .NET che siano).
    Serve usare JNI (Java Native Interface) o librerie apposite che ne fanno a loro volta uso. Si tratta di aspetti abbastanza "avanzati" ....
  • Re: Dritte sulla creazione di un piccolo programma

    Ok, quindi se ho capito bene potrei interagire p.e. con il prompt di windows per cercare altri processi attivi e individuare la finestra interessata?

    Mi viene poi da pensare anche ad un'altra cosa.. c'è un modo, magari con JNI o librerie apposite, per individuare i processi attivi ed estrapolare il contenuto di file temporanei creati dal processo stesso? O comunque leggere p. e. dalle righe del prompt di windows quello che il processo sta eseguendo?

    Cioè per fare un esempio concreto.. ho un programma che dopo un pò di operazioni mi restituisce un file di log da cui posso estrapolare le informazioni che mi interessano, ma se volessi leggere queste informazioni in tempo reale?
    Immagino che il programma scriva queste informazioni in un file temporaneo o in una memoria cache da qualche parte del dispositivo.. è possibile quindi individuare questo processo ed estrapolarne il contenuto?
  • Re: Dritte sulla creazione di un piccolo programma

    ilp4zz0 ha scritto:


    Ok, quindi se ho capito bene potrei interagire p.e. con il prompt di windows per cercare altri processi attivi e individuare la finestra interessata?
    Allora lo ripeto: con il solo framework standard di Java (Java SE, Standard Edition), non c'è una API per poter "enumerare" ed ottenere informazioni sulle finestre di altri processi esterni alla applicazione Java. Perché è un concetto altamente system-dependent e non c'è quindi una API standard in generale in Java.

    Si può usare JNI per invocare funzioni "native" del S.O. Ma questo richiede di sporcarsi (molto) le mani con C/C++, con le API native (es. Win32 API) e con la creazione di una DLL che deve rispettare le specifiche di JNI. Richiede solidissime basi di C/C++ e del contesto in cui si opera (es. le API di Windows).
    Oppure si cerca e si usa una libreria Java che ha una parte in JNI per cui qualcuno si è già "sporcato le mani" con le API del sistema ben prima di te.

    In alternativa si usa la JNA (https://github.com/java-native-access/jn) che fa già da ponte verso funzioni native, senza necessità di scrivere DLL (ma devi comunque conoscere il contesto nativo).

    ilp4zz0 ha scritto:


    c'è un modo, magari con JNI o librerie apposite, per individuare i processi attivi
    Da Java 9/JDK 9 non ce n'è bisogno perché è stata introdotta la nuova Process API. Prima di Java 9 si doveva lanciare un eseguibile esterno (un "task list" del SO o altro), catturarne l'output ed estrapolarne i risultati (non bello/non facile).

    ilp4zz0 ha scritto:


    ed estrapolare il contenuto di file temporanei creati dal processo stesso?
    Cosa faccia e con quale logica un programma in generale non si può dire. Sapere quali sono gli "handle" aperti sul file-system in un certo momento, sì ma idem come sopra, solo con API native.

    ilp4zz0 ha scritto:


    Cioè per fare un esempio concreto.. ho un programma che dopo un pò di operazioni mi restituisce un file di log da cui posso estrapolare le informazioni che mi interessano, ma se volessi leggere queste informazioni in tempo reale?
    Se sai a priori il percorso al file, no prob, è immediato. Se non lo sai ..... è un altro discorso.
  • Re: Dritte sulla creazione di un piccolo programma

    Se sai a priori il percorso al file, no prob, è immediato. Se non lo sai ..... è un altro discorso.
    Purtroppo non conosco il percorso del file.. comunque grazie per tutte le indicazioni.. mi rendo conto che c'è molto lavoro da fare, quindi cercherò ora di approfondire gli argomenti che mi hai indicato
Devi accedere o registrarti per scrivere nel forum
6 risposte