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

Java Discussion :

Capture d'écran qui fonctionne en jar mais pas en service windows


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Capture d'écran qui fonctionne en jar mais pas en service windows
    Bonjour,

    Je m'entraine sur Java et les services windows et je m'arrache les cheveux depuis 2 jours sur le cas que je vous présente. Toute aide est appréciée.

    J'ai fait un petit programme qui réalise une capture d'écran toutes les 5 secondes et rafraichit un fichier screenshot.gif (situé dans la racine du projet):

    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
     
    import java.awt.*;
     
    public class Screenshot {
    	public static void main(String[] args){
                    // determine le taille courante du screen
    		Toolkit toolkit = Toolkit.getDefaultToolkit();
    		Dimension screenSize = toolkit.getScreenSize();
    		Rectangle screenRect = new Rectangle(screenSize);
    		//creer le screenshot
    		Robot robot = null;
                    while(true){
                            try {
    			      robot = new Robot();
                                  ImageIO.write(image, "gif" , new File("screenshot.gif"));
                            } 
                            catch (AWTException e) {}
                    }
             }
    }
    J'exporte le jar. Le programme marche très bien.
    J'en fais un executable via JSmooth, puis j'en fais un service avec le logiciel Exe to Service (en essai).

    Je vais sur services.msc et démarre le service issu de mon exe.

    Et là : incompréhension. Le service semble fonctionner mais il créé des fichiers screenshot.gif tous noirs et dont la dimension est 1024 x 768 alors que dans les étapes avant d'en faire un service les images sont 1680 x 1050, ce qui correspond à la résolution de mon écran.

    Je pourrais en déduire qu'en tant que service la fonction getScreenSize n'arrive pas à trouver le bon écran et fait donc une copie dans le vide.
    J'ai essayé de le faire de manière indirecte en passant par un service qui servait à faire un exec() de la version executable, même résultat !

    Je suis à bout de solutions (à part tester la même chose en C++, ce qui me demandera la journée), donc si vous pouvez m'aider je vous serais très reconnaissant. Je posterai mes propres avancées au fur et à mesure.

    Merci d'avance!

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Les services windows tournent en dehors de toute session utilisateur. Il me semble qu'ils n'ont simplement aucun accès à l'interface graphique qui, elle, est liée à une session utilisateur.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Lancement au démarrage
    Merci pour cette réponse elle m'a fait réfléchir et les services ne semblent à l'évidence pas convenir. En revanche je suis arrivé au même résultat par le biais des applications lancées au démarrage de windows en ajoutant mon application à la base des registres au niveau de HKEY_LOCAL_MACHINE> SOFTWARE> Microsoft> Windows> CurrentVersion> Run.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Thread qui fonctionne sous eclipse mais pas depuis un jar ?
    Par POKOU dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 01/07/2014, 17h56
  2. Réponses: 1
    Dernier message: 07/09/2007, 13h15
  3. Eval qui fonctionne sur Firefox mais pas sur IE :D
    Par Comawhite dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/10/2006, 12h31
  4. [2.0] connexion qui fonctionne chez moi mais pas sur un autre pc
    Par Lorenzeb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/09/2006, 18h47
  5. Fonction JS qui fonctionne avec Mozilla mais pas avec IE.
    Par etiennegaloup dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 14h58

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