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 :

Remettre une application externe au 1er plan


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut Remettre une application externe au 1er plan
    Bonjour à tous,

    Je cherche le moyen de remettre au 1er plan une application externe lancée par mon code java. En fait, j'ai réalisé vite fait une petite application graphique contenant 1 bouton ; en cliquant sur ce bouton, cela lance une application externe (excel dans l'exemple qui va suivre). Ce que je voudrais faire c'est qu'en cliquant sur le bouton une seconde fois, au lieu de relancer une seconde fois l'appli, que l'application externe revienne au premier plan.
    Il y a bien la méthode Window.toFront() mais comme il s'agit d'une application externe, la "window" n'est pas un objet java. Avec la méthode Runtime.getRuntime().exec(), je récupère un objet de type Process avec lequel je peux communiquer via des flux entrants ou sortants.
    Voilà, je suis donc complètement bloqué sur ce point là. Voici le code "faisant le travail"
    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
     
    import javax.swing.JButton;
     
    public class Controller implements ActionListener
    {
      private Process process = null;
     
      public void actionPerformed(ActionEvent event)
      {
        if (((JButton)event.getSource()).getName().equals("button1"))
        {
          try
          {
            if (process == null)
            {
              process = Runtime.getRuntime().exec("cmd /C start excel");
            }
            else
            {
              // to front
              System.out.println("process to front");
            }
          }
          catch (IOException e)
          {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
      }
    }
    Quelqu'un a-t-il une piste, une idée, svp ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Alors vu la multitude de réponse et n'ayant pas non plus trouvé de solution personnellement, j'ai fini par utiliser une méthode native via jni. Heureusement pour moi, à l'heure où j'écrit ces lignes, le système hôte de l'application est unique. Donc n'y connaissant absolument rien à la programmation FenêtreS, merci pour les tutos vc++ sur ce site.

    Donc problématique à moité résolue.

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    j'ai fini par utiliser une méthode native via jni
    tu peut nous montrer le code ?

  4. #4
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si l'hote est unique et de type windows, cette librairie pourrait t'intéresser

    http://j-interop.org/

    Elle implémente en pur java le protocole dcom permettant la communication inter-applications sous windows. A partir de là tu devrais pourvoir récupérer l'objet COM de excel est le manipuler.

  5. #5
    Membre confirmé
    Profil pro
    INGENIEUR DE RECHERCHE
    Inscrit en
    Février 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : INGENIEUR DE RECHERCHE

    Informations forums :
    Inscription : Février 2003
    Messages : 74
    Par défaut
    Salut,

    Peut-être idiote ma soluce mais tant pis : pourquoi ne pas faire passer l'appli java en arrière plan, en testant préalablement le process?

Discussions similaires

  1. [Débutant] Comment faire passer une fenêtre d'application active au 1er plan
    Par guillaume.niel dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/12/2012, 23h28
  2. Fenêtre d'une application tierce au 1er plan
    Par ggpm07 dans le forum GTK+
    Réponses: 5
    Dernier message: 02/05/2009, 20h07
  3. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  4. Réponses: 6
    Dernier message: 07/09/2005, 20h31
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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