Autor Thema: Java Agent ruft externes Programm auf und liefert Rückgabewerte...  (Gelesen 12475 mal)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung

Hallo @Kaffeetrinker,

Ich möchte eine exe aufrufen, im geöffneten Frontend etwas eintragen und dann die Rückgabewerte weiterverarbeiten.

Der Aufruf kommt soll aus einer Notes Ansicht erfolgen.

JAVA oder nicht JAVA ?

Ich denke java ist hier die richtige Wahl oder ?
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Und warum nicht LotusScript?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
In Script habe ich noch keine Lösung gefunden wo ein Programm auf ein anderes wartet.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Wie möchtest Du das denn in Java machen?
In LS geht das z.B. so, auch könnte man das über eine BAT-Datei "händeln" (simulieren).

Code
     Print "Calc.exe wird gestartet"
     ShellAndWait("Calc.exe")
     Print "Calc.exe wurde beendet"
 
Public Type STARTUPINFO
  cb As Long
  lpReserved As String
  lpDesktop As String
  lpTitle As String
  dwX As Long
  dwY As Long
  dwXSize As Long
  dwYSize As Long
  dwXCountChars As Long
  dwYCountChars As Long
  dwFillAttribute As Long
  dwFlags As Long
  wShowWindow As Integer
  cbReserved2 As Integer
  lpReserved2 As Long
  hStdInput As Long
  hStdOutput As Long
  hStdError As Long
End Type

Public Type PROCESS_INFORMATION
  hProcess As Long
  hThread As Long
  dwProcessID As Long
  dwThreadID As Long
End Type

Declare Function WaitForSingleObject Lib "kernel32" (Byval _
  hHandle As Long, Byval dwMilliseconds As Long) As Long

Declare Function CreateProcessA Lib "kernel32" (Byval _
  lpApplicationName As Long, Byval lpCommandLine As String, Byval _
  lpProcessAttributes As Long, Byval lpThreadAttributes As Long, _
  Byval bInheritHandles As Long, Byval dwCreationFlags As Long, _
  Byval lpEnvironment As Long, Byval lpCurrentDirectory As Long, _
  lpStartupInfo As STARTUPINFO, lpProcessInformation As _
  PROCESS_INFORMATION) As Long

Declare Function CloseHandle Lib "kernel32" (Byval _
  hObject As Long) As Long

Public Const NORMAL_PRIORITY_CLASS = &H20&
Public Const INFINITE = -1&

Public Sub ShellAndWait(Byval RunProg As String)
  Dim RetVal As Long
  Dim proc As PROCESS_INFORMATION
  Dim StartInf As STARTUPINFO
  StartInf.cb = Len(StartInf)
  'Execute the given path
  RetVal = CreateProcessA(0&, RunProg, 0&, 0&, 1&, _
  NORMAL_PRIORITY_CLASS, 0&, 0&, StartInf, proc)
  'Disable this app until the shelled one is done
  RetVal = WaitForSingleObject(proc.hProcess, INFINITE)
  RetVal = CloseHandle(proc.hProcess)
End Sub
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline m3

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Das ist aber eher LS & Win32. ;)
Und wenn ich das unter 8.5 unter Ubuntu laufen lasse?  >:D
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Dann natürlich schlecht, aber ich kenne keinen produktiven 8.5 Ubuntu Einsatz, auch nicht in naher Zukunft ersichtlich ;)
Oder ist das bei euch anders?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline m3

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Also es ist zumindest am Horizont ersichtlich.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Java sollte es schon sein.

Zur Zeit versuche ich mit folgender Programmzeile aus einem Domino Agenten zu starten.


import lotus.domino.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;


public class JavaAgent extends AgentBase {

   public void NotesMain() {

      try {

         Process p = Runtime.getRuntime().exec("cmd");   


Die Dos Prompt wird auch geladen ( kann ich im Taskmanager sehen ), aber die Box geht nicht auf. ??? Betriebssystemabhängig ?

Wenn ich "cmd / c dir" eingebe,

dann kann ich mir das Verzeichnis in eine ArrayList laden und auswerten. Aber ich möchte ja was in die Dos-Prompt eingeben. die geht aber nicht auf. Arbeite auf windows2003 Server

???
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Habe es auf Windows XP auch probiert.

Gleicher Fehler.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Ich glaube, das geht nicht, was du da vor hast.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Vielleicht kannst Du mal beschreiben was dein Ziel ist, nur eine CMD-Box zu öffnen wird es doch nicht sein, oder doch  ::)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
ich würds mit rmi versuchen. Ist aber nicht so einfach aufzusetzen.
Wenn du das Javaprogramm aufrufst wartet der NotesAgent einfach nicht auf den Rückgabewert.
Andere Möglichkeit wären REST oder SOAP Webservice Clients in Notes.
Oder sowas wie MQSeries.
SOA.
Solche Infrastrukturen werden ja nicht dazu gebaut, um Consulting Gelder zu generieren, sondern haben schon eine gewisse Berechtigung.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline m3

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Vielleicht kannst Du mal beschreiben was dein Ziel ist, nur eine CMD-Box zu öffnen wird es doch nicht sein, oder doch  ::)
Du solltest den ersten Eintrag in diesem Thread lesen. Dort beschreibt er eigentlich recht genau, was er will.
Daraus ergibt sich auch, dass MQSeries und Co. nicht wirklich eine Lösung sind.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
OK mal aufs Neue.
Wie sehen denn die Rückgabewerte aus? Textdatei?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Vielleicht hilft ja schon mal diese Doku. Die Methode Runtime.exec() habe ich selbst schonmal benutzt um damit aus Textdateien mit Hilfe von Graphviz eine Grafikausgabe zu erzeugen. Das aber erfolgte zumindest ohne Benutzerinteraktion.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Hi Mad,

diesen Artikel habe ich auch gefunden und ausprobiert. Tatsächlich bekommt man Rückgabewerte. Ich habe zum Beispiel den Dos Dir - Befehl ausgeführt und die Liste ausgelesen. Über den Aufruf

BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()));
line = in.readLine()

bekommt man alles zurückgeliefert und kann Zeile für Zeile ausgelesen werden. Läuft gut. Obwohl es auch gut wäre zu wissen, warum sich das CMD - Fenster nicht öffnen lässt. Da es mit "wordpad" doch so gut funktioniert.

Mein jetziges Problem ist aber ein ganz anderers.

Was, wenn ich ein wordpad öffne und Texte die eingegeben werden auswerten möchte ?

: )

Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline m3

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
ROTFL.  :-X
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
 :-[

wirklich sehr hilfreich.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Da brauchst Du eine "Art" Keylogger-Software, aber Vorsicht die wird von Antivierenprgorammen gerne als Trojaner / Spyware behandelt.
Diese Bösen ... ;)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz