# programm öffnen mit der runtime



## pcProfie (3. Dez 2012)

moin
ich programmier gerad was tolles und eigentlich leichtes. jetzt scheitere ich an einer sache:
ich hab nen ordner und da sind programmverknüpfungen drin (.Ink). mein programm soll alle programme in dem ordner öffnen. folgender code:

```
Runtime.getRuntime().load("C:/Autostarter/MitInternet/AshampooWinOptimizer8(2).lnk");
```
hierbei fängt er schon an zu spacken:


```
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Autostarter\MitInternet\AshampooWinOptimizer8(2).lnk: Can't load this .dll (machine code=0x214) on a IA 32-bit platform
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary1(Unknown Source)
	at java.lang.ClassLoader.loadLibrary0(Unknown Source)
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.load0(Unknown Source)
	at java.lang.Runtime.load(Unknown Source)
	at As.changed1(As.java:57)
	at As.main(As.java:38)
```

Zweiter Versuch:

```
Runtime.getRuntime().exec("C:/Autostarter/MitInternet/AshampooWinOptimizer8(2).lnk");
//naturlich im try / catch
```
ein bisschen sehr viel länger XD:


```
java.io.IOException: Cannot run program "C:/Autostarter/MitInternet/AshampooWinOptimizer8(2).lnk": CreateProcess error=193, %1 ist keine zulässige Win32-Anwendung
	at java.lang.ProcessBuilder.start(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at As.changed1(As.java:58)
	at As.main(As.java:38)
Caused by: java.io.IOException: CreateProcess error=193, %1 ist keine zulässige Win32-Anwendung
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(Unknown Source)
	at java.lang.ProcessImpl.start(Unknown Source)
	... 6 more
```
nachher hab ich mir nämlich sowas vorgestellt:

```
File[] fileArray = new File("C:/Autostarter/MitInternet/").listFiles();
try {
    for(int oo = 0; oo < fileArray.length(); oo++) {
            //irgendwie so
        Runtime.getRuntime().exec("fileArray[oo].getAbsolutePath()");
                //oder auch getColonialPath(). Was dann besser geht
    }
} catch (IOException e1) {                                                    
    e1.printStackTrace();
}
```
danke schonmal an alle!


----------



## dayaftereh (3. Dez 2012)

Also du versucht mit einem Kommand den Link auf dein Programm auszuführen, denke mal das geht so nicht, versuche aber mal

```
Runtime.getRuntime().exec("start C:/Autostarter/MitInternet/AshampooWinOptimizer8(2).lnk");
```


----------



## tröööt (3. Dez 2012)

also Runtime.load(String) ist schon mal die komplett falsch methode ... > DOC LESEN ... denn das hat was mit dynamic libs zu tun ...

und dann : du kannst eine LNK nicht "starten" ... sondern müsstest mit einer lib wie z.b. JShortCut / JShellLink den pfad zur hinterliegenden anwendung herrausbekommen und diese dann starten ...

den LNK selbst ist nur ein spezieller system-dateityp ... aber NICHT das eigentliche programm ..

und zu guter letzt : nutze ProcessBuilder anstatt Runtime.exec()


----------



## pcProfie (5. Dez 2012)

dayaftereh hat gesagt.:


> Also du versucht mit einem Kommand den Link auf dein Programm auszuführen, denke mal das geht so nicht, versuche aber mal
> 
> ```
> Runtime.getRuntime().exec("start C:/Autostarter/MitInternet/AshampooWinOptimizer8(2).lnk");
> ```



Das gibt leider eine can't found exception aus...


----------



## pcProfie (5. Dez 2012)

tröööt hat gesagt.:


> 1) also Runtime.load(String) ist schon mal die komplett falsch methode ... > DOC LESEN ... denn das hat was mit dynamic libs zu tun ...
> 
> 2) und dann : du kannst eine LNK nicht "starten" ... sondern müsstest mit einer lib wie z.b. JShortCut / JShellLink den pfad zur hinterliegenden anwendung herrausbekommen und diese dann starten ...
> 
> ...



1) ausprobieren geht ja trotzdem XD

2) nochma in q text bitte XD

3) Aha.. man lernt dazu..


----------



## pcProfie (5. Dez 2012)

tröööt hat gesagt.:


> sondern müsstest mit einer lib wie z.b. JShortCut / JShellLink den pfad zur hinterliegenden anwendung herrausbekommen und diese dann starten ...


hab noch ma in die api geguckt... wo haste den klassennamen her??? :rtfm:


----------



## freez (5. Dez 2012)

pcProfie hat gesagt.:


> C:\Autostarter\MitInternet\AshampooWinOptimizer8(2).lnk: Can't load this .dll (machine code=0x214) on a IA 32-bit platform



und



pcProfie hat gesagt.:


> Caused by: java.io.IOException: CreateProcess error=193, %1 ist keine zulässige Win32-Anwendung



versuchst du eine 64Bit Anwendung auf einem 32Bit System zu starten?


----------



## pcProfie (5. Dez 2012)

nope
1) ich hab win 64bit
2) das programm ist 32bit (und gibts auch nicht in 64bit, außerdem möcht ich keine einschränkungen der programme haben.
3) kann ich das programm manuell öffnen.................

*4)* damit ihr es nicht falsch versteht: ich möchte nicht nur verknüpfungen öffnen sondern auch andere dateien: von mir aus kann der spätere user auch ein bild eine win mp wiedergabeliste und ein spiel so starten können...


----------



## Bernd Hohmann (5. Dez 2012)

Desktop (Java Platform SE 6) könnte hier Dein Freund sein.

Bernd


----------



## pcProfie (6. Dez 2012)

Bernd Hohmann hat gesagt.:


> Desktop (Java Platform SE 6) könnte hier Dein Freund sein.
> 
> Bernd



Super! danke! man lernt immer wieder was dazu! es geht endlich!!!
Und auch danke an die anderen!


----------

