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

avec Java Discussion :

Intégrer un programme externe dans une application java


Sujet :

avec Java

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Intégrer un programme externe dans une application java
    Bonjour,

    Tout d'abord, désolé si ce post n'est pas au bon emplacement, je ne savais pas trop où le placer.

    Dans le cadre du développement d'une application java, j'aurais besoin d'ouvrir des programmes dans mon appli et de placer l'interface graphique de celui-ci dans celle de mon programme (par exemple dans un cadre réservé en bas).

    Les application à ouvrir peuvent être variées, mais ce sont toujours des ".exe" que j'ai à lancer. J'aurais également besoin de pouvoir redimensionner ces programmes (comme on peut le faire dans tout OS).

    Environnement de développement : Windows.

    Je ne vois pas du tout comment faire, si quelqu'un avait une petite idée ça serait cool !

    Merci d'avance,

    NiKo.

    (N'hésitez pas à demander plus de précisions si je n'ai pas été assez clair.)

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    ca va pas etre possible, a moins d'abandonner la partie "java" et de te plonger bien profond dans l'api windows.

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Merci de ta réponse.

    Serait-il alors possible d'intégrer cela dans mon application java ?
    (par exemple je lance un autre programme avec mon appli qui permettrait de gérer ça ?)

    ou

    Doit-je abandonner le java totalement ?


    Je travaille avec d'autres personnes sur ce projet qui souhaite réaliser leur partie de l'application en java. Voilà pourquoi je suis bien embêté.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    meme si techniquement c'est probablement réalisable via des classes natives faisant le boulot, vu que tu veux
    1) utiliser des applications d'un OS bien déterminé
    2) intégrer une(des) interface(s) non-java
    3) aura besoin d'une bonne dose d'api windows en accès direct

    je suis pas sur que le java soit approprié...

    note: je suis meme pas sur que ce soit réalisable meme en C/C++/etc. Parce que bon, "récupérer" les fenetres d'une application, c'est pas une chose facilement réalisable.... Ni peut etre meme prévue par l'os, mais là ca dépasse mes connaissances

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 571
    Points : 15 538
    Points
    15 538
    Par défaut
    En fait c'est réalisable si l'application est prévue pour pouvoir être intégré en tant que composant. Mais il faudra de toute façon passer par JNI.

    Si l'application n'est pas prévue pour, je doute que ce soit possible, JAVA ou non.

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut Quelles applications exe ???
    Salut,

    Bon déjà, pour lancer ton appli externe regarde dans la FAQ :
    http://java.developpez.com/faq/java/...icationExterne

    Ensuite s'il s'agit de programmes de chez billou genre Word, Excel, il existe une api qui permet de tout piloter à partir de java sans être obligé de passer par JNI.
    J'ai fait une appli java qui pilote un mailing dans word

    Peux-tu me dire de quelles appli externes tu parles ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    ça permet de piloter, pas de "placer l'interface graphique de celui-ci dans celle de mon programme (par exemple dans un cadre réservé en bas)."

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    ça permet de piloter, pas de "placer l'interface graphique de celui-ci dans celle de mon programme
    Je suis bien d'accord : cela ne répond pas à la question de départ.

    Mais comme NiKoMinus part de zéro, je me dis que de pouvoir au moins ouvrir une autre appli serait un début ;
    quitte à se contenter de redimensionner la fenêtre et abandonner l'intégration dans java.

    Comme tu l'as dit justement :
    "récupérer" les fenetres d'une application, c'est pas une chose facilement réalisable.... Ni peut etre meme prévue par l'os
    Il serait intéressant que NiKoMinus nous en dise un peu plus sur le but de cette application.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Merci pour ces réponses.

    En fait je doit réaliser une application permettant de gérer des tests fonctionnels. Intégrer l'appli à tester dans mon appli aurait été plus "classe" que de demander au testeur (individus quelconques) de redimensionner les deux fenêtres.

    Apparemment cela semble difficilement réalisable mais si vous avez d'autres idées n'hésitez pas je suis preneur !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    pour faire des tests, tu peux regarder peut etre du coté de Robot http://java.sun.com/j2se/1.4.2/docs/...awt/Robot.html qui permet de générer des évènements système.

    Sinon, si les applis à tester sont du java, la plus simple et d'instancier les classes directement et de les dimensionner.

  11. #11
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut Echantillon de robot
    +1 pour le robot.

    On peut faire des trucs très marrants pour vraiment pas cher ...

    Tu trouveras un exemple de code qui :
    1. Lance le tableur d'Open Office (remplace par Excel si tu veux)
    2. Attend deux secondes que l'application soit bien lancée
    3. Dans le tableur, descend d'une cellule et va à droite
    4. Entre la lettre "a" dans la cellule
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.event.KeyEvent;
    import java.io.IOException;
    import java.util.GregorianCalendar;
     
    /**
     *
     * @author poste_bruno
     */
    public class Main {
     
        public Main() {
        }
     
        public static void main(String[] args) {
     
            // Lancement du tableur
            // Attention, sous Windaube, remplacer les "\" par des "/" dans le chemin
            try {
                Process proc = Runtime.getRuntime().exec("C:/Program Files/OpenOffice.org 2.4/program/scalc.exe");
            } catch (IOException e) {
                e.printStackTrace();
            }
     
            // temporisation empirique pour attendre que l'application soit bien chargée avant de lancer le robot
            Temporisation(2000);
     
            // lancement du robot
            Robot robot = null;
            try {
                robot = new Robot();
            } catch (AWTException ex) {
                ex.printStackTrace();
     
            }
            robot.keyPress(KeyEvent.VK_DOWN);
            Temporisation(500);
            robot.keyPress(KeyEvent.VK_RIGHT);
            Temporisation(500);
            robot.keyPress(KeyEvent.VK_A);		/** pression de la touche A */
            robot.keyRelease(KeyEvent.VK_A);	/** relachement de la touche A*/
     
        }
     
     
    // petit utilitaire de temporisation
        private static void Temporisation(long NbMilliseconde) {
            long M1, M2;
            M1 = new GregorianCalendar().getTimeInMillis();
            M2 = new GregorianCalendar().getTimeInMillis() + NbMilliseconde;
            while (M1<M2)   M1 = new GregorianCalendar().getTimeInMillis();
        }
     
    }
    Le robot peut simuler aussi les déplacements de souris mouseMove(int,int) et faire des captures d'écrans ...

    Amuse-toi bien

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    en même temps, pour openoffice, il existe déjà une api qui permet de le piloter fiablement via un canal spécialisé

Discussions similaires

  1. Intégrer Flash dans une application Java
    Par pingouin84 dans le forum API standards et tierces
    Réponses: 15
    Dernier message: 25/10/2013, 12h36
  2. intégrer du code R dans une application java
    Par supcomingenieur dans le forum R
    Réponses: 3
    Dernier message: 04/06/2013, 13h48
  3. Intégrer JasperReport dans une application Java
    Par jasmine22 dans le forum Jasper
    Réponses: 1
    Dernier message: 01/08/2012, 08h38
  4. Intégrer un web service dans une application java
    Par madjidri dans le forum Services Web
    Réponses: 2
    Dernier message: 08/06/2008, 14h53
  5. [débutante]Intégrer flash dans une application java
    Par bouba83 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 11/05/2006, 11h11

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