Lancer un programme (Java)

Fermé
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 - 3 janv. 2010 à 12:13
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 - 6 janv. 2010 à 19:48
Bonjour,
Je voudrais savoir si il est possible de lancer un programme déjà installé sans passer par l'icône ni par un raccourci, ni par le .exe du programme, et sans connaitre l'emplacement du programme, sous Java
je m'explique :
J'ai crée une application qui nécéssite de passer par Steam.exe mais il faut donc trouver l'emplacement du .exe ou du raccourci, j'ai pensé a "if exist", mais comme il peut avoir enormément de répertoires différents où peut être installé Steam, j'aimerai donc savoir si il existe de lancer un programme sans passer par le .exe ou l'icône, ou le raccourci en Java.
Merci d'avance
SoGeek.
A voir également:

8 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
3 janv. 2010 à 14:18
Normalement Steam crée des clés registres pour indiquer où il est installer.

Il te reste donc à fouiller ces clés registres et à ensuite vérifier si Steam.exe existe bien dans l'emplacement donné par la clé registre (si tu l'a trouvée aussi, sinon c'est que Steam n'est pas installé ^^).

0
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 18
3 janv. 2010 à 14:29
Bonjour scriptiz,
oui en effet j'ai trouvé la clef registre de Steam indiquant le répertoire d'installation, mais maintenant comment l'utilisée sur les autres ordinateurs ? parceque Steam est certainement installer autrepart sur les autres ordinateurs, je voudrais donc connaitre l'emplacement d'installation, mais je ne sais pas comment utiliser cette clef registre, en tout cas je l'ai bien trouvée avec les données "D:\Steam\steam.exe" "%1"
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
3 janv. 2010 à 14:43
Tu peux te servire d'une API pour accéder au registre Windows à partir de Java.

Un exemple :
http://www.trustice.com/java/jnireg/

La clé registre sera toujours située au même endroit donc tu pourra la récupérer, ensuite avec son contenu créé le chemin vers le fichier Steam.exe

Bonne chance

0
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 18
3 janv. 2010 à 14:45
Bon bah je vais essayer de me débrouiller, Merci beaucoup scriptiz ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
3 janv. 2010 à 14:47
En fait tu n'a pas besoin de l'API que je t'ai donnée, il y a des classes toutes faites dans l'API de base de Java qui te permette de toucher au registre.

Voici un exemple de code, je te laisse fouiller sur Google pour plus de détails :
import java.util.prefs.Preferences;
 
public class Test
{ 
   public static void main(String[] args) 
	{
      Preferences lPrf = Preferences.userRoot().node( "Test/My App" );
      lPrf.put( "My Key", "My Data" );
      System.out.println( lPrf.get( "My Key", "default" ) );
   }
}


PS : voici la documentation de la classe java.util.prefs.Preferences >>> https://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
3 janv. 2010 à 15:16
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
6 janv. 2010 à 19:20
Voici la solution qui fonctionne (que j'ai passée à SoGeek par MP) si elle peut servir pour d'autres :

import java.io.*;

public class ReadReg 
{
	public static void main(String[] args) throws IOException 
	{
		Process myProcess = null;
		InputStream myOut = null;

		try
		{
			myProcess = Runtime.getRuntime().exec("reg query HKEY_CLASSES_ROOT\\steam\\Shell\\Open\\Command /ve");
			myOut = myProcess.getInputStream();
		}
		catch (IOException e)
		{
			System.out.println(e.getMessage());
		}

		String s = "";
		int b = -1;
		do
		{
			try
			{
				if(b != -1)
					s += (char)b;
				
				b = myOut.read();	
			}
			catch(IOException e)
			{
				System.out.println(e.getMessage());
			}
		} while(b != -1);
		
		// on sépare les zones délimitées par des tabulations
		//String[] splitted = s.split("\t");
		String[] splitted = s.split("\"");
		
		// on sépare les zones délimitées par des " dans la bonne partie
		//String[] splitted2 = splitted[2].split("\"");
		
		// on récupère le chemin de l'application
		//String path = splitted2[1];
		String path = splitted[1];
		
		// on affiche le chemin de l'application
		System.out.println(path);
	}
}


Elle récupère donc le chemin d'installation de Steam dans le registre (dans la variable path) et l'imprime à l'écran.
0
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 18
6 janv. 2010 à 19:48
et PS : pour inserer la variable path au GetRuntime.exec voilà la solution


{ Runtime t = Runtime.getRuntime();
try {
Process p = t.getRuntime().exec(path+ " -applaunch 240 -console +connect "+ip.getText()+" +password "+mdp.getText());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace(); }
Cordialement,
& Encore grand merci à scriptiz
SoGeek.
PS : Je peux aider par MP pour le Batch et pour le Hardware :)
0