Bonjour
Je voudrais savoir comment on peut faire un programme en java qui lance l'équivalent d'une ligne de commande (pour lancer vlc entre autre)
Si ça exixte pas, peut-on faire ça en C ?
Merci d'avance
Mad
Version imprimable
Bonjour
Je voudrais savoir comment on peut faire un programme en java qui lance l'équivalent d'une ligne de commande (pour lancer vlc entre autre)
Si ça exixte pas, peut-on faire ça en C ?
Merci d'avance
Mad
tu veux dire, exécuter une commande dos ?
c'est possible...
voila, là il exécute la commande qu'il reçoit en argument.Code:
1
2
3
4
5
6
7
8 import java.io.*; public class Exe { public static void main(String[] args) throws IOException { Process p = Runtime.getRuntime().exec(args); } }
j'espère t'avoir été utile...
@+
Sinon tu peux aussi le faire en C en executant un nouveau processus mais je me souvient plus trop de la fonction a appeler...
En c tu utilisePour java, il y a la reponse 2 post plus haut ;)Code:
1
2 System("start c:\path\monexe.exe");
Ok je vais essayer tout ça
Merci beaucoup
Mad
Il faut aussi ouvrir l'invite de commande pour le faire.
Code:Runtime.getRuntime().exec("cmd /C tonchemin/vlc.exe");
Salut,
Pourquoi ouvrir l'invite de commande système pour lancer un exécutable ?Citation:
Envoyé par BiMouXeTTe
Lancer directement VLC permet de conserver un code a peut près protable (du moment que le chemin vers VLC est paramétrable).
a++
Elle ne se lance pas vraiment, mais si tu la lances directement ton application ca ne fonctionne pas, en tout cas c'est ce que j'ai constaté ou alors peut etre que je me trompe :S
Ce n'est vrai que pour les commandes systèmes tels que dir qui ne sont pas de vrai exécutable : ce sont des commandes qui sont intégré dans cmd.exe (ou comand.com sous Win9x).Citation:
Envoyé par BiMouXeTTe
a++
Et les bat non ? :( Ah bon d'accord... lol merci pour l'info.
Et est-ce que c'est possible de lancer une application telle que VLC, mais en mode "caché" (l'interface ne s'affiche pas, mais on peut enregistrer par exemple)?
A enregistrer dans LancerVLC.java :
:arrow: Avec les chemins "en dur" (remarquez les double \ !) :
:arrow: Avec les chemins à entrer à l'execution de java :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 import java.io.IOException; class LancerVLC{ public static void main(String[] args) { try { String[] command = new String[] {"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe", "C:\\test\\jarhead.avi"}; Process child = Runtime.getRuntime().exec(command); } catch (IOException e) { System.out.println(e.getMessage()); } } }
Code:
1
2
3
4
5
6
7
8
9
10
11
12 import java.io.IOException; class LancerVLC{ public static void main(String[] args) { try { // on utilise args qui sont les paramètres du programme process child = Runtime.getRuntime().exec(args); } catch (IOException e) { System.out.println(e.getMessage()); } } }
- Et on execute avec : >java -cp . LancerVLC "C:\program files\videolan\vlc\vlc" C:\test\jarhead.avi
remarques :
utiliser les "" si il ya des espaces dans les chemins
les majuscules sont optionnelles avec windows
:arrow: jarhead.avi (la bande annonce en DivX HD !!!)
Et en mode "caché"?
Je vais faire une remarque. L'interet des java est que c'est un langage tres portable. Il faut essayer tant bien que mal de concerver cette portabilite. Donc la chose a eviter c'est de mettre un chemin en dur dans le code. Donc
proscrire tout ce qui est du type :
Et ceci pour plusieurs raisons :Code:
1
2
3 String[] command = new String[] {"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe", "C:\\test\\jarhead.avi"}; Process child = Runtime.getRuntime().exec(command);
1/ sur les plateformes de type Unix ( GNU/Linux, Mac OS, BSD, etc... ) t'es dans les choux. Pour resoudre ce probleme tu dois utiliser la constante File.separator ou File.pathSeparator ( je me souviens plus laquelle exactement mais vas faire un tour dans la javadoc, ca peut pas faire de mal ).
2/ Supposons que tu ais resolu ce probleme. Il y a quelque chose de tres important : tu as rentre l'emplacement de VLC en dur dans le code. Que ce soit toi demain qui change de version de VLC et que tu decides de ne pas utiliser le meme repertoire ou que ce soit un autre utilisateur de ton appli qui ait decide ( ou ete contrait car il bose sous linux par exemple ) de ne pas placer dans le meme repertoire que celui que tu as decide au moment du code, et bien t'aura un gros probleme. Si c'est toi, tu vas me repondre que tu peux modifier ton code et recompiler. Par contre, si c'est pas toi, mais un de tes utilisateurs, il pourra peut etre rien faire ( il n'a pas les source, ou n'a pas les connaissances ou droit de modifier et recompiler ton code ). Comme je suis sympa, je vais te donner plusieurs solutions. La permiere est de passer par un fichier de conf ou sera specifier l'emplacement de vlc, un peu a la methode des fichiers de conf des systemes *n*x. La seconde est permettre a l'utilisateur de modifier a l'aide d'option et de sauvegarder a un endroit l'emplacement. Il y en a encore d'autres, a ta de chercher et de choisir la solution.
Pour repondre a la question sur le fait de "cacher" vlc, je ne sais pas si c'est possible. Le plus simple est a mon avis d'aller jeter un coup d'oeil a la doc de vlc directement. Une autre solution est peut etre d'utiliser un autre player en ligne de commande comme mplayer, le probleme est que c'est un player linux mais il j'avais entendu dire qu'il y avait des portages sous windows. Bref, si tu n'es pas contraint a utiliser vlc, pourquoi pas utiliser cette solution. Dans tous les cas, tu peux aussi passer par le fichier de conf et permettre a l'utilisateur de specifier son player favori ( chose que j'apprecie car je ne supporte pas que l'on lance par exemple Windows Media Player a la place de mon player prefere ... )