sciezka do programu

0

hej, na wstepie tego postu - mam nadz ze nikt mi za takie podstawy glowy nie urwie ;) moj problem jest nastepujacy - musze z poziomu javy dowiedziec sie jaka jest sciezka instalacji programu X. Slyszalam hasla ze przez rejestr, przez JNI-ale przyznam szczerze-nie wiem jak to ugryzc.
czy ktos z Was moglby mi dac pare wskazowek?

pozdrawiam,
misty

0

Podam Ci teraz kod ktorego sie nauczylem na tym forum:

package test;


public class Test {

    public static void main(String[] args) throws Exception {
        System.out.println(Test.class.getProtectionDomain().getCodeSource().getLocation());
    }
}
</java>
W wyniku tego lancucha wywolan dostajesz URL w postaci file://. Dla Jara bedzie to url pliku, w IDE url katalogu. Moze sie przydac.
0

hej
dzieki za odpowiedz. ale to zwraca mi sciezke do danej klasy. a ja potrzebuje znalezc sciezke jakiegos zainstalowanego na kompie programu X.

0

Prawda, napisalem zupelnie nie na temat, sory, nie doczytalem dokladnie posta.

0

To nie jest problem javowy... to zależy od OSa i musisz użyć JNI, więc pytaj w dziale o C++ może...

0

Po co ci to? Jakich programów szukasz? Może wcale nie potrzebujesz tego? Jest klasa Desktop, która robi niektóre rzeczy automagicznie wiedząc coś o niektórych instalacjach (przeglądarka, klient poczty...). Może to wystarczy. Jak nie to możesz jeszcze zerknąć w kod tejże klasy, może coś ci wyjaśni.

0

wiesz co, musze z poziomu javy uruchamiac niektore programy (wybrany komunikator). Przykladowo-user uzywa mojego programu ABC. ma sobie ikone 'Uruchom program X' - no i program musi sie uruchomic.. oczywiscie program ABC moze byc zainstalowany zarowno u usera ktory ma Windowsa jak i takiego co ma Linuxa. Wpierw wiec musze odnalezc sciezke instalacji programu X aby go pozniej uruchomic..

tak, slyszalam ze musze uzyc JNI (chyba nawet napisalam o tym w pierwszym poscie), ale szczerze-nie kumam jak. Dlatego prosilam o jakies wskazowki.. pytalam google, no ale po prostu nie moge tego skumac ://

0

Dla wielu programów zadziała

Desktop.getDesktop().browse(new File(nazwaProgramu).toURI());

gdzie nazwaProgramu jest postaci iexplore, notepad++, itp.

0

ale co to w sumie robi? bo nie zwraca zadnej sciezki na pewno (brwose zwraca void). generalnie Twoj test:

 
Desktop.getDesktop().browse(new File("notepad++").toURI());

Daje mi:

java.io.IOException: Failed to open file:/C:/misty/work/workspace/netbeans/test/notepad++. Error message: Nie można odnaleźć określonego pliku.

 

czyli on szuka programu notepad++ w sciezce projektu test (w ktorym ten kod odpalilam).. to nie o to mi chodzilo. sciezka instalacja notepad++ to c:/program files/notepad++ - te sciezke chce wydobyc

0

wiecie co-znalazlam rozwiazanie :) wpierw faktycznie trzeba sprawdzic jaki to OS. jesli chce uruchomic program pod linuxem to starczy zwykle:

Runtime.getRuntime().exec(X);

gdzie X- nazwa programu

Jesli to windows-znalazlam taka klase z ktorej korzystam, na forum:

http://www.coderanch.com/t/132336/gc/Read-Windows-Registry-java

tylko zmodyfikowalam te sciezke: COMPUTER_WINDOWS_FAVORITES_FOLDER, ustawilam to na:

REGQUERY_UTIL+"\"HKCU\\Software\\X"; - gdzie jak to wyglada wpierw podejrzalam w rejestrze windowsa. i ta klasa wtedy dziala, zwraca mi sciezke ktora wrzucam to Runtime.getRuntime().exec() i hula :)

mam nadz ze bedzie to komus przydatne. pozdrawiam i dziekuje za sugestie :)

             misty
0

Polecenie

Desktop.getDesktop().browse(new File(nazwaProgramu).toURI());

uruchamia program, pod warunkiem, że go znajdzie. To czy znajdzie zależy od zmiennej PATH i (dla windowsów) wpisów w rejestrze. U mnie znalazło notepad++ chociaż nie ma go w zmiennej PATH.

1 użytkowników online, w tym zalogowanych: 0, gości: 1