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

    recuperare titolo finestra attiva

    salve, vorrei recuperare informazioni relative ad una finestra attiva sul mio sistema... e quindi titolo della finestra, individuare se all'interno di questa finestra ci sono dei possibili bottoni da cliccare, recuperare del testo (tramite coordinate x/y), ecc.

    ovviamente non apro questo thread per farmi spiegare passo dopo passo come fare, mi servirebbe semplicemente capire quale classe prevede dei metodi che possano realizzare la mia richiesta. documentandomi in rete ho letto che la libreria JNA può essermi d'aiuto, ma non ho trovato esempi concreti o guide per documentarmi.

    il mio intento è quello di realizzare una swing che possa recuperare informazioni da una finestra attiva (tipo il blocco note o una comune applicazione) e interagire con quest'ultima... sempre documentandomi, ho scoperto, ad esempio, che la classe Robot può aiutarmi per le operazioni di input da mouse o tastiera, ma rimane il problema che devo prima individuare la finestra attiva e gli eventuali bottoni cliccabili in essa.

    ringrazio anticipatamente chiunque mi risponderà.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Qual è lo scopo finale del software?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    apprendere dei concetti che mi mancano... capire se java offre dei metodi che possano interfacciarsi con altre applicazioni in esecuzione. ho sentito parlare di metodi nativi, non proprio legati all'sdk...

    settimana scorsa ho affrontato AutoIT, quest'ultimo linguaggio consente tali funzionalità ma rispetto a java è più pesantuccio e poco flessibile.

  4. #4
    azz... devo considerare il silenzio come l'incapacità di java nel poter realizzare quello che chiedo? cioè, se uno, ad esempio, volesse associare a un bottone di un'applicazione in esecuzione un tasto della tastiera, java non permette di farlo?

    documentandomi la classe Robot mi viene incontro... ma possibile che con java non c'è un modo per rilevare l'applicazione in esecuzione (finestra attiva o non), e ricavarne nome finestra, individuare se in essa ci sono dei bottoni cliccabili e in caso affermativo associarli a dei tasti della tastiera?


  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da RogerTheJoker
    azz... devo considerare il silenzio come l'incapacità di java nel poter realizzare quello che chiedo?
    No. Con la libreria JNA puoi sfruttare le API native del S.O. e fare molto (non tutto) nei confronti del sistema. Ma ... devi conoscere queste API!

    Parli di "recuperare informazioni relative ad una finestra attiva sul mio sistema" ma devi precisare che cosa sai di questa finestra. Conosci il titolo? Conosci la "classe" della finestra? (su Windows la "classe" di una finestra è un concetto ben preciso e particolare). Conosci il nome dell'eseguibile (che gestisce la finestra)?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    grazie per la risposta andbin, spero di trovare qualcosa sulla libreria JNA per documentarmi... magari una guida con esempi

    proprio tramite il tuo blog ho sentito parlare per la prima volta di JNA... ottimo articolo.

    il concetto di classe di una finestra mi è oscuro, a quanto pare incominciano ad essere troppe le cose su cui devo documentarmi, mi auguro di non demoralizzarmi

    si avrei il titolo, ma i titoli possono cambiare in parte... tipo con il linguaggio AutoIT è possibile spostare il focus su di una finestra semplicemente indicando parte del titolo. se puoi indicarmi magari delle risorse da consultare, ovviamente in rete, te ne sarei grato.

    saluti.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da RogerTheJoker
    grazie per la risposta andbin, spero di trovare qualcosa sulla libreria JNA per documentarmi... magari una guida con esempi
    Se vuoi iniziare a "giocare" un pochino con la libreria JNA, prova questo esempio che ho appena scritto:

    codice:
    import com.sun.jna.*;
    import com.sun.jna.win32.*;
    
    public class MinimizzaCalcolatrice {
        public static void main(String[] args) {
            Pointer hWnd = MyUser32Lib.INSTANCE.FindWindowA(null, "Calcolatrice");
    
            if (hWnd == null) {
                System.out.println("Finestra non trovata");
                return;
            }
    
            MyUser32Lib.INSTANCE.ShowWindow(hWnd, MyUser32Lib.SW_MINIMIZE);
        }
    
        public interface MyUser32Lib extends StdCallLibrary {
            MyUser32Lib INSTANCE = (MyUser32Lib) Native.loadLibrary("user32", MyUser32Lib.class);
    
            int SW_MINIMIZE = 6;
    
            Pointer FindWindowA(String winClass, String title);
            boolean ShowWindow(Pointer hWnd, int nCmdShow);
        }
    }
    Funziona solo su Windows (invoca 2 funzioni delle API Win32). La scritta "Calcolatrice" si riferisce proprio alla ben nota Calcolatrice di Windows. Avvia la calcolatrice, poi lancia questo programmino, che va a "minimizzare" la calcolatrice.

    È necessario avere la libreria JNA, in particolare deve essere in "classpath" il jar jna.jar.

    Per la libreria JNA vedere il sito http://jna.java.net (ma di recente il progetto si è spostato su https://github.com/twall/jna). E per le API Win32 la documentazione di riferimento è Microsoft MSDN library, http://msdn.microsoft.com/en-us/library/ (chiaramente sezione Windows development).

    Se hai dubbi o domande, chiedi pure.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    accipicchia... dire che sei stato esauriente è poco! non ho proprio avuto tempo sti giorni, stasera mi diverto un pò. grazie per le dritte

  9. #9
    - copio i file jna.jar (ed anche platform.jar) in C:\Program Files\Java\jdk1.6.0_24\lib
    - aggiungo il percorso C:\Program Files\Java\jdk1.6.0_24\lib alla variabile d'ambiente Path

    ma mi da errore in fase di compilazione: import com.sun.jna.*, import com.sun.jna.win32.*, ecc.

    sono sicuro di aver installato a dovere la libreria jna.jar... infatti se da c:\ digito jna.jar me la vede.

    buh... non saprei

    in ogni caso ho dato un occhio alle API Win32, ho compreso anche il codice di esempio che mi hai postato... penso che con un pò di esercizio, posso padroneggiarle

  10. #10
    oddio sto impazzendo, cercato anche su google, ma niente... ho un problema di visibiltà del package jna. ho fatto 2 prove, inserendolo in:

    -1 C:\Program Files\Java\jdk1.6.0_24\jre\lib
    -2 C:\Program Files\Java\jdk1.6.0_24\lib

    ovviamente per entrambi i percorsi, ho settato la variabile ambiente path. in pratica, da prompt dei comandi c:\, se digito jna.jar (il mio package da importare), me lo vede, nel senso che non da l'avviso di comando sconosciuto.

    solo che, andando a compilare il programma, ricevo l'errore relativo all'import del package com.sun.jna.*

    sto veramente impazzendo... help me.

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.