Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Gesione dei segnali

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    10

    Gesione dei segnali

    salve a tutti,
    dovrei creare un frame che riesce a rilevare i comandi come ctrl+tab e ctrl+alt+canc e bloccarli in quanto è un programma su una macchina a cui viene effettuato accesso da remoto e non vi deve essere la possibilità di passare ad altri programmi senza l'inserimento di una password all'interno del programma stesso. Ho letto delle guide su come bloccare questa serie di pulsanti ma devo essere sincero non ci ho capito molto e non funzionano...
    Qualcuno sa aiutarmi o spiegarmi le classi che mi interessano?

    la classe che ho usato è la seguente ma non mi funziona

    codice:
    public class AltTabStopper implements Runnable
    {
         private boolean working = true;
         private JFrame frame;
    
         public AltTabStopper(JFrame frame)
         {
              this.frame = frame;
         }
    
         public void stop()
         {
              working = false;
         }
    
         public static AltTabStopper create(JFrame frame)
         {
             AltTabStopper stopper = new AltTabStopper(frame);
             new Thread(stopper, "Alt-Tab Stopper").start();
             return stopper;
         }
    
         public void run()
         {
             try
             {
                 Robot robot = new Robot();
                 while (working)
                 {
                      robot.keyRelease(KeyEvent.VK_ALT);
                      robot.keyRelease(KeyEvent.VK_TAB);
                      frame.requestFocus();
                      try { Thread.sleep(10); } catch(Exception) {}
                 }
             } catch (Exception e) { e.printStackTrace(); System.exit(-1); }
         }
    }
    Ultima modifica di LeleFT; 12-02-2015 a 18:45 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    CTRL+ALT+CANC non lo intercetterai mai, perchè il sistema operativo interviene prima della tua applicazione Java.
    Quel codice inibisce la combinazione ALT+TAB, purchè la tua applicazione abbia un JFrame attivo e venga invocato il metodo create() di quella classe, passandogli appunto il JFrame attivo. Non l'ho provato (l'ho visto su Stack Overflow), ma potrebbe funzionare (se richiamato correttamente).

    Attenzione che, se per qualche ragione viene sollevata una eccezione (anche una InterruptedException), quel codice fa terminare brutalmente la tua applicazione.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    10
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    CTRL+ALT+CANC non lo intercetterai mai, perchè il sistema operativo interviene prima della tua applicazione Java. Quel codice inibisce la combinazione ALT+TAB, purchè la tua applicazione abbia un JFrame attivo e venga invocato il metodo create() di quella classe, passandogli appunto il JFrame attivo. Non l'ho provato (l'ho visto su Stack Overflow), ma potrebbe funzionare (se richiamato correttamente). Attenzione che, se per qualche ragione viene sollevata una eccezione (anche una InterruptedException), quel codice fa terminare brutalmente la tua applicazione. Ciao.

    Io richiamo il tutto in questo modo:

    codice:
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            JFrame mio = new JFrame();
            java.awt.GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice cc = ge.getDefaultScreenDevice();
            cc.setFullScreenWindow(mio);
            mio.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            new AltTabStopper(mio);
        }
    ma alt+tab continua a funzionare

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    10
    Nessuno sa dirmi dove sbaglio?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non devi fare new AltTabStopper, ma usare il metodo statico "create()". Se fai la new manualmente, allora devi anche preoccuparti di farlo partire quel thread... cosa che fa, appunto, il metodo create() per te.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    10
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Non devi fare new AltTabStopper, ma usare il metodo statico "create()". Se fai la new manualmente, allora devi anche preoccuparti di farlo partire quel thread... cosa che fa, appunto, il metodo create() per te.


    Ciao.
    E come faccio a far partire AltTabStopper create() ??

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    10
    Ok ci sono riuscito il main doveva essere impostato cosi

    codice:
            JFrame mio = new JFrame();
             java.awt.GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
             GraphicsDevice cc = ge.getDefaultScreenDevice();
             cc.setFullScreenWindow(mio);
             mio.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
             AltTabStopper run1 = new AltTabStopper(mio);
             run1.run();
    Grazie per la dritta e per la disponibilità

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.