IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Détecter le changement fenêtre active


Sujet :

Langage Java

  1. #1
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Points : 108
    Points
    108
    Par défaut Détecter le changement fenêtre active
    Bonjour,
    SVP quelqu'un a-t-il une idée pour ce problème ?
    je développe un service qui se comportera en fonction du changement de la fenêtre active.
    Je dois donc savoir quand est-ce que la fenêtre active a changé, quand une fenêtre devient active, je dois savoir la période de temps de son statut actif.
    Par exemple F1 est active de t1 à t2, F2 devient active de t2 à t3, ....

    Merci d'avance pour vos réactions.

  2. #2
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    Tu cherches à créer un service windows qui est capable d'enregistrer l'activité de l'utilisateur : il a firefox activé pendant t1, word pendant t2...
    Ou bien c'est pour des écrans d'un application web ?

  3. #3
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Points : 108
    Points
    108
    Par défaut
    Bjr et merci pour ta reaction,
    Quelque chose pouvant tourner en permanence (même sous Linux) et de capture l’écran et non pas juste la fenêtre d'une application.
    Si j'ai trois appli en cours A1, ... A3, leurs fenêtres peuvent être toutes visibles en partie (restaurer - agrandir) avec une seule qui est la fenêtre active (disons celle de A2).
    je capture donc l’écran et non pas la fenêtre de A2 (je le fais déjà a travers un post dans ce forum) et je garde l'image et le temps pendant lequel A2 a été active.
    Puis lorsque A3 devient la fenêtre active ... je recapture l'ecran et garde l'image et le temps jusqu'à ce que la fenêtre active change .....

    Merci bien

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Il ne me semble pas que Java propose de surveiller les fenêtres d'autres applications.
    Cela va demander de passer par du code JNI, spécifique à chaque plate-forme.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Points : 108
    Points
    108
    Par défaut
    Bonjour,
    Je fais la capture d'écran ... comme ici. Je peux également le faire selon une période de temps fixe (chaque 2 min par exemple).
    Mais j'aimerai le faire selon une période dépendant du fais que la fenêtre active a été changée...ou que l'image de l'écran a changée.
    Peux-tu me donner des indications pour JNI ?

    Merci.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par zsoh Voir le message
    Peux-tu me donner des indications pour JNI ?
    Avant tout, apprendre à surveiller si une fenêtre est active en C ou C++, avec les API win32. Puis faire pareil avec X-Window pour linux.

    Une fois que ce sera fait, il sera temps de mettre au point des bibliothèques JNI pour rendre ce genre de choses possibles pour Java.

    Ou, plus simple : faire cela directement en C ou C++ ou quoi que ce soit qui a des APIs pour surveiller les fenêtres du bureau.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    http://java.sun.com/docs/books/jni/

    Sinon à voir si en dot.net c'est plus simple et si dans mono ça marche aussi...
    En dot.net ça à l'air simple (non testé) car il est assez simple d'appeler les fonctions des dll native, mais cela ne marche que sous windows (il n'y a aucune chance que ce code fonctionne sur un linux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.Text;
     
    public class MainClass
     
        // Declare external functions.
        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();
     
        [DllImport("user32.dll")]
        private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
     
        public static void Main() {
            int chars = 256;
            StringBuilder buff = new StringBuilder(chars);
     
            // Obtain the handle of the active window.
            IntPtr handle = GetForegroundWindow();
     
            // Update the controls.
            if (GetWindowText(handle, buff, chars) > 0)
            {
                Console.WriteLine(buff.ToString());
                Console.WriteLine(handle.ToString());
            }
        }
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/12/2007, 08h25
  2. [TQuery] Détecter le changement de champ
    Par sjrd dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/04/2005, 17h20
  3. Fenêtre active
    Par Isa31 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 23/11/2004, 09h40
  4. [Langue Clavier] Comment détecter le changement de la langue ?
    Par Fares BELHAOUAS dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 30/09/2004, 19h26
  5. Comment détecter un changement du réglage de voume sonore ?
    Par mjlub dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/01/2004, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo