Call ShellExecute

Hallo,
Ich würde gern mehrere Verknüpfungen auf eine kleine schaltfläche legen. Für jede Verknüpfung nun ein button.
Es Funktioniert auch alles bis auf diese Java Anwendung.
Wie starte ich folgendes Programm über eine shellexecute funktion?

„C:\Programme\Nokia Managers\jre\1_5_0\bin\javaw.exe“ -cp ./cl/cl.jar;./cl/nlaf.jar;./cl/applibs.jar;./cl/poseidon.jar;./cl/servicesif.jar; com.nokia.em.launcher.CLApplication -start BTS
Auszuführen in „C:\Programme\Nokia Managers\cl…“

Call ShellExecute(Me.hwnd, „Print“, _
„C:\Programme\Nokia Managers\jre\1_5_0\bin\javaw.exe“ -cp ./cl/cl.jar;./cl/nlaf.jar;./cl/applibs.jar;./cl/poseidon.jar;./cl/servicesif.jar; com.nokia.em.launcher.CLApplication -start BTS", „C:\Programme\Nokia Managers\cl“, _
„“, SW_MAXIMIZE)

kann mir jemand helfen ? :stuck_out_tongue:

Das 2te Problem ist das der Explorer nicht meinen gewünschten pfad öffnet

Call ShellExecute(Me.hwnd, „explore“, _
„“, „C:“, _
„“, SW_NORMAL)

es müsste doch c:\ geöffnet werden oder ?

Hallo Joe,

Du hast überall das selbe Verständnisproblem. Nimm den Parameter mit in die Anführungszeichen, dann klappt’s.

„C:\Programme\Nokia Managers\jre\1_5_0\bin\javaw.exe“ -cp

„C:\Programme\Nokia Managers\jre\1_5_0\bin\javaw.exe -cp“

Gruß, Rainer

Hi,

Call ShellExecute(Me.hwnd, „explore“, „“, „C:“, „“, SW_NORMAL)

Hier soll Der Explorer mit laufwerk C:\ geöffnet werden. Also direkt auf c:\ und nicht in einem unterordner.

hmm und zu meinem Java problem…
Wenn ich eine Batch datei dazu bringe den Prompt im ORdner C:\Programme\Nokia Managers\cl\ abzulegen und danach die Appication starte funktioniert es …warum geht das in dieser Funktion nicht ?

Call ShellExecute(Me.hwnd, „Print“, „C:\Programme\Nokia Managers\jre\1_5_0\bin\javaw.exe -cp C:\Programme\Nokia Managers\cl\cl.jar;./cl/nlaf.jar;./cl/applibs.jar;./cl/poseidon.jar;./cl/servicesif.jar; com.nokia.em.launcher.CLApplication -start BTS“, „C:\Programme\Nokia Managers\cl“, „“, SW_MAXIMIZE)

mfgjoe

Hallo Joe,

Call ShellExecute(Me.hwnd, „explore“, „“, „C:“, „“,
SW_NORMAL)

Hier soll Der Explorer mit laufwerk C:\ geöffnet werden. Also
direkt auf c:\ und nicht in einem unterordner.

Das ‚C:‘ das Du eingegeben hast, bezeichnet den Ort, an dem sich der Explorer befindet. Der Parameter würde eine Stelle weiter vorn übergeben. Mein Beispiel öffnet ‚C:\Temp‘

Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" \_
Alias "ShellExecuteA" (ByVal hwnd As Long, \_
ByVal lpOperation As String, ByVal lpFile As String, \_
ByVal lpParameters As String, ByVal lpDirectory As String, \_
ByVal nShowCmd As Long) As Long

Private Sub Command1\_Click()
 ShellExecute Me.hwnd, vbNullString, "explorer.exe", "c:\Temp", "C:\winnt", 1
End Sub

OK?

hmm und zu meinem Java problem…
Wenn ich eine Batch datei dazu bringe den Prompt im ORdner
C:\Programme\Nokia Managers\cl\ abzulegen und danach die
Appication starte funktioniert es …warum geht das in dieser
Funktion nicht ?

Das würde mit Shell() so gehen, bei Shellexecute mußt Du den Parameter an die dafür vorgesehene Stelle schreiben. Shellexecute funktioniert anders als Shell. Warum nimmst Du den API-Aufruf überhaupt? Genügt der Befehl Shell() denn nicht? Da würde das so aussehen:

Option Explicit

Private Sub Command1\_Click()
 Shell "C:\winnt\Explorer.exe C:\Temp", vbNormalFocus
End Sub

Mit dem selben Ergebnis.

Gruß, Rainer

Hi Rainer,
Wenn ich nun ein Programm in einem bestimmten Ordner starten möchte ?

Shell „C:“, vbNormalFocus
Shell „CD winnt“, vbNormalFocus
Shell „C:\winnt\irgendeinprog.exe“, vbNormalFocus

oder wie müsste das mit einer normalen shell aussehen ?

mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Joe,

Wenn ich nun ein Programm in einem bestimmten Ordner starten
möchte ?

Du mußt in jedem Fall den Pfad zu dem Programm angeben.

Shell „C:“, vbNormalFocus
Shell „CD winnt“, vbNormalFocus

Du meinst, weil Du das in der Konsole so tippst? Laß die beiden Zeilen weg.

Shell „C:\winnt\irgendeinprog.exe“, vbNormalFocus

Wenn das Programm im Verzeichnis ‚C:\winnt‘ liegt, startest Du es so. Ohne Parameter, Du hast ja keinen angegeben. Willst Du Parameter übergeben, dann innerhalb der Anführungszeichen, wie die aussehen müssen legt das Programm fest.

Gruß, Rainer

juhu,
sorry ich habe mal wieder das wichtigste vergessen:/

Also die Programme scheinen auf datein zuzugreifen die im gleichen Ordner liegen :confused:

DIe WIndows verknüpfung funktioniert auch erst wenn ich in den Eigenschaften : Ausführen in „C:\Programme\Nokia Managers\cl…“
eintrage. Ist halt Java :confused:

Wenn ich eine Batch datei schreiber und den COmmando Promt in den Ordner bringe und dort die Application ausführe, funktioniert es.
Deshalbt habe ich das mit

Shell „C:“, vbNormalFocus
Shell „CD winnt“, vbNormalFocus

geschrieben

mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Also die Programme scheinen auf datein zuzugreifen die im
gleichen Ordner liegen :confused:

??? Du meinst auf den Ordner, in dem das ausführende Programm läuft?

DIe WIndows verknüpfung funktioniert auch erst wenn ich in den
Eigenschaften : Ausführen in „C:\Programme\Nokia
Managers\cl…“
eintrage. Ist halt Java :confused:

Was ist ‚Java‘ nun wieder? *fg*

Wenn ich eine Batch datei schreiber und den COmmando Promt in
den Ordner bringe und dort die Application ausführe,
funktioniert es.

Mal zum Unterschied zum Batch.

Im Batch würde ich z.B. um ein Programm von CD starten schreiben:

e:
cd e:\Programme
Test.exe

In Shell schreibe ich gleich

Shell („e:\Programme\Test.exe“,VbNormalFocus)

Deshalbt habe ich das mit

Shell „C:“, vbNormalFocus
Shell „CD winnt“, vbNormalFocus

Das bewirkt nichts. Wenn Du den standardpfad verbiegen willst, mach es mit

CurDir = „C:\Test“

Aber weil Du Java schreibst. Ist das Compiliert? Oder benötigt das einen Interpreter? Wenn ja, dann ruf doch den Interpreter auf und übergib Pfad und Programm als Parameter. Geht das? Mit Java hatte ich noch nichts zu tun.

Gruß, Rainer

hi rainer,

CurDir = „C:\Programme\Nokia Managers\cl“
Objekt required ?

Das könnte klappen.
Also Der Tool startet nach ausführung der shell noch ein 2tes Programm namens noser.exe. Diese Exe liegt auch im cl verzeichnis. Wenn ich das Programm zb über Start Ausführen startet das Programm aber er findet die NOser.exe nicht. Das gleiche Problem wenn ich die Shell starte… gehe ich aber cmd … cd C:\programme\nokia… in den Ordner und starte das programm findet er die exe und alles läuft.

mfg joe

Hi Joe,

CurDir = „C:\Programme\Nokia Managers\cl“
Objekt required ?

oops, da hatte ich mit etwas falsch gemerkt. CurDir liest nur, setzen kann man den Pfad damit gar nicht. Dafür gibt es …

ChDir „c:\Temp“

Sorry.

Gruß, Rainer