Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: baumi78 am 24.02.03 - 12:37:55
-
Gibt es eine Möglichkeit aus Lotus Script ein externes Java Programm zu starten, wenn ja wie kann ich dies realisieren??
-
Probier mal so etwas,
da man mit Shell nur com exe und bat aufrufen kann
musst Du eben java aufrufen und den Programmnamen als Parameter mitgeben
Aufruf = "C:\java\java.exe javaprogramm.java"
taskId% = Shell(Aufruf,1)
Ciao
Don Pasquale
-
da man mit Shell nur com exe und bat aufrufen kann
... es gehen auch andere Dateien, du mußt nur noch ein START dazwischenklemmen -
taskId% = Shell(START DateiPfad\DateiName.mitEndung )
... wenn ich es noch richtig weiß...
...ob es allerdingsw mit Java-Applets läuft wage ich zu bezweifeln...
ata
-
@Ata:
WAAS,
und wieso lese ich darüber nichts in der Hilfe ?
ciao
Don Pasquale
-
... oh Gott - hab ich was angestellt? :-X :-X :-X
ata
-
Ich hatte das Problem nämlich und die Hilfe ist da ziemlich eindeutig.
Ich musste einiges umstricken, weill ich das vorher anders hatte.
:(
A string expression whose value is the name of the program to run, including arguments. program can be the name of an executable file that uses a file name extension of BAT, COM, PIF, or EXE
Ciao
Don Pasquale
-
ein Java Programm sollte kein Problem sein - ist ja ein normale exe nur in java geschrieben, ein applet müsste auch gehen wobei der Pfad des jdk und der Java Klasse angegeben wird.
- das applet kann auch über ne bat oder com gestartet werden
cu
-
Probier mal so etwas,
da man mit Shell nur com exe und bat aufrufen kann
musst Du eben java aufrufen und den Programmnamen als Parameter mitgeben
Aufruf = "C:\java\java.exe javaprogramm.java"
taskId% = Shell(Aufruf,1)
Ciao
Don Pasquale
Wird bei der Übergabe des Programmnamens der gesamte Pfad angegeben und warum .java ?? Außerdem möchte ich dem Javaprogramm selbst auch Parameter übergeben! hast du vielleicht etwas Beispielcode??
-
Hallo baumi,
Warum java ?
Welche Endung hat den das Javaprogramm, dass Du aufrufen willst ?
Dim TasId As Integer
TaskID% = Shell(Java.exe LavaProgramm.java Parameter1 Paramater2 ParameterN,1)
Ich habe leider keinen Beispielcode,
zeig doch mal wie weit Du bist.
Ciao
Don Pasquale
-
Also im Moment sieht es so aus, ohne Parameterübergabe, ich bekomme als Returncode 33 aber das Programm wird nicht scheinbar nicht korrekt ausgeführt, sollte aber funktionieren. Wenn ich es per "hand" starte klappt es jedenfalls. Meine Shell öffnet sich nur kurz, kann ich das beeinflussen, das ich sehe was überhaupt passiert??
Sub Click(Source As Button)
Dim aufruf As String
aufruf= "C:\jdk1.3.1_04\bin\java.exe C:\jdk1.3.1_04\projects\PortWriteSMS.java,1"
taskId% = Shell(aufruf,1)
'Msgbox(taskID%) 'returns 33 if correct started
End Sub
-
Hallo Baumi,
sieht äusserst korrekt aus.
Was Du da schilderst kommt mir aber bekannt vor, allerdings
waren da bei mir die Pfade nicht gesetzt.
Mit Print Aufruf bekommst Du im Debugger den genauen Wortlaut
des Aufrufs.
Dann ein cmd Fenster öffnen
und dann Einfügen. Vielleicht hat Dein Javapgrogramm einen
Fehler oder es wird nicht gefunden.
Ciao
Don Pasquale
-
Also scheinbar findet er tatsächlich die Klassen nicht, verstehe ich allerdings nicht denn wenn ich das Java Programm im bin verzeichnis starte funktioniert es auch, der Classpath ist scheinbar korrekt gesetzt. Was meinst du mit Pfade nicht gesetzt??
-
... hier nun der Code zum Starten von Dateien:
Dim taskId As Integer
taskId% = Shell("START d:\tabulatur.xls")
... das klappt bislang ganz gut damit...
ata
-
aufruf= "C:\jdk1.3.1_04\bin\java.exe C:\jdk1.3.1_04\projects\PortWriteSMS.java,1"
Hallo,
da es bekanntlich keine dumme Fragen gibt, hier gleich zwei davon:
- warum übergibst Du die java Datei und nicht die class?
- warum steht im Aufruf-String nochmal die ,1 drin ?
Den Pfad must Du meines Erachtens auch nicht angeben.
Ich habe das mit
aufruf = "c:\j2sdk1.4.1\bin\java NameDerClassDatei"
taskId% = Shell(aufruf,1)
versucht - geht bei mir.
Grüße
-
O.k. ich hab es hinbekommen, ja das mit .java hatte mich auch etwas irretiert, wäre ja auch etwas komisch gewesen!! Das mit der doppelten 1 als Parameter natürlich auch!! Es funktioniert jetzt jedenfalls und ich kann auch Parameter an das Java Programm übergeben. Vielen Dank für alle Tips und bis zum nächsten Problem.
Grüße Baumi
Sub Click(Source As Button)
Dim aufruf As String
aufruf= "c:\jdk1.3.1_04\bin\java PortWriteSMS " & """+49172000000""" & " ""Dies ist ein Test"""
taskId% = Shell(aufruf,1)
End Sub
-
ich habe so ein ähnliches Problem.
Der Aufruf der Anwendung klappt bei mir ohne Probleme.
Leider sind bei uns im Unternehmen die Programme nicht immer gleich installiert
sondern an 3 Stellen:
c:\Programme\microsoft office PE\Office11\winword.exe oder
c:\Programme\microsoft office SE\Office11\winword.exe oder
c:\Programme\microsoft office\Office11\winword.exe
kann ich irgendwie eine Abfrage basteln
starte erst den ersten Pfad --> wenn nicht 33 zurückgegeben wird probier den nächsten und so weiter... und unterdrück die Fehlermeldung "File not found"
Aber irgendwie kommt bei mir nur die Fehlermeldung File not found und Notes ist fertig....
Cash
-
Das ist ein Fall für das Errorhandling. Mehr dazu findest du hier: http://atnotes.de/index.php?topic=11980.0
Axel
-
Vielen Dank das hat mich ein gutes Stück weiter gebracht. Leider aber nicht bis zum Ziel:
Ich schaffe es jetzt 2 versch. Installationsverzeichnisse anzuspringen aber dann hängt er. Hier mal ein Teil des Codes:
Programm:
prog=" "
Select Case lager
Case "Word" : prog="c:\Programme\Microsoft Office SE\Office11\winword.exe"
Case "Excel" : prog="c:\Programme\Microsoft Office SE\Office11\excel.exe"
Case "Acrobat Reader" : prog="acrord32"
End Select
prog=prog+datei
If start=0 Then
On Error 53 Goto Fehler1
taskId% = Shell(prog, 1)
Exit Sub
End If
Fehler1:
Messagebox "Error1" & Str(Err) & ": " & Error$
prog=" "
start=0
Select Case lager
Case "Word" : prog="c:\Programme\Microsoft Office PE\Office11\winword.exe"
Case "Excel" : prog="c:\Programme\Microsoft Office PE\Office11\excel.exe"
Case "Acrobat Reader" : prog="acrord32"
End Select
prog=prog+datei
If start=0 Then
On Error 53 Goto Fehler2
taskId% = Shell(prog, 1)
Exit Sub
End If
Fehler2:
Messagebox "Error2" & Str(Err) & ": " & Error$
prog=" "
start=0
Select Case lager
Case "Word" : prog="c:\Programme\Microsoft Office\Office11\winword.exe"
Case "Excel" : prog="c:\Programme\Microsoft Office\Office11\excel.exe"
Case "Acrobat Reader" : prog="acrord32"
End Select
prog=prog+datei
If start=0 Then
On Error 53 Goto Fehler2
taskId% = Shell(prog, 1)
Exit Sub
End If
Ich vermute mal er will einfach nicht den zweiten on error 53 goto fehler 2 ausführen!
Gibt es dafür eine Lösung?
Gruß
Cash
-
Ähm, wenn ich mir den Code so anschaue und ich mich nicht alles täuscht, schickst du ihn in eine Endlosschleife.
...
Fehler2:
Messagebox "Error2" & Str(Err) & ": " & Error$
..
If start=0 Then
On Error 53 Goto Fehler2
taskId% = Shell(prog, 1)
Exit Sub
End If
....
Du springst beim Fehler immer wieder vor die Stelle die den Fehler verursacht hat und somit tritt der Fehler ja wieder auf, usw.
Axel
-
Ich würde das anders machen.
Wenn Office auf dem Rechner installiert ist dann sind die Dateiendungen mit den Office-Komponenten assoziiert. Jetzt müsste man 'nur' noch diese Verknüpfung in der Registry suchen und dort steht dann wo das Programm hinterlegt ist.
-
Oder noch einfacher:
taskid = Shell("cmd.exe /c start " + Dateiname , 0)
wobei Dateiname = LW:/Pfad/Dateiname.Endung
Windows besorgt den Rest.
Gruß
André