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 :

Lancer un fichier .exe


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut Lancer un fichier .exe
    Bonjour,

    J'essaie de lancer le clavier virtuel de vista à l'aide d'un bouton dans mon appli Java mais il me ressort tjs la même erreur :

    Cannot run program "c:\windows\system32\osk.exe": CreateProcess error=740, L'opération demandée nécessite une élévation

    Je suis pourtant en session Administrateur.

    Voici le code au cas où je n'aurai pas fait un truc comme il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String cmd = "c:\\windows\\system32\\osk.exe";
    //creation du processus
    try {
    	p = Runtime.getRuntime().exec( cmd );
          } catch (IOException e) {
    	e.printStackTrace();
          }
    	InputStream in = p.getInputStream();
    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est l'UAC de Windows qui t'empêche d'exécuter le programme.
    Pour éviter cela il faut passer par un programme natif intermédiaire qui gèrerait cela. Le plus simple étant d'utiliser le shell cmd.exe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] cmd = { "cmd.exe", "/C", "c:\\windows\\system32\\osk.exe" };
    Sinon deux remarques :
    • Depuis Java 5 il est préférable d'utiliser ProcessBuilder à la place de Runtime.exec()...
    • Le peu de code que tu donnes semblent montrer une très mauvaise gestion des exceptions...



    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Merci ça se lance bien maintenant.

    Par contre, je ne peux pas détruire le processus avec un processBuilder contrairement à un Process qui avait la méthode destroy.

    Enfin, qu'est ce que tu entend par une mauvaise gestion des exception?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Non en fait j'ai trouvé en ce qui concerne le destroy par contre je ne vois tjs pas pour les exceptions :'(

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben déjà dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          try {
    	p = Runtime.getRuntime().exec( cmd );
          } catch (IOException e) {
    	e.printStackTrace();
          }
    	InputStream in = p.getInputStream();
    Si tu n'arrives pas à lancer le process, tu affiches une erreur mais tu continues quand même le traitement en utilisant le process qui n'existe pas...

    Tu traites une IOException pour obtenir une NullPointerException



    Bref soit tu ne traites pas l'exception à ce niveau, soit cela doit englober tous le traitement...


    a++

Discussions similaires

  1. Lancer un fichier .exe
    Par Marvelll dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 30/03/2010, 11h41
  2. Réponses: 2
    Dernier message: 28/03/2010, 17h24
  3. Lancer un fichier .exe en C?!
    Par Ibn Rochod dans le forum C
    Réponses: 15
    Dernier message: 10/04/2008, 18h07
  4. Command unix ou linux (fedora): lancer un fichier .exe
    Par corseb-delete dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 06/04/2007, 11h29
  5. [VB.Net] lancer un fichier .exe depuis une VB.net
    Par vijeo dans le forum VB.NET
    Réponses: 3
    Dernier message: 01/12/2006, 08h14

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