Parameter an laufenden Prozess übergeben

  • Ich möchte an ein laufendes Programm/Skript Parameter übergeben (selbst geschrieben).
    Per "start.exe p1 p2" kann man an die Anwendung start.exe ja bekanntlich die Parameter p1 und p2 übergeben.
    Das Programm start.exe ist aber schon gestartet und soll neue Parameter erhalten (ohne es zu beenden und neu zu starten)!

    Ist das Möglich?
    Wenn ja, wie?

  • Es gibt diverse Möglichkeiten um eine Kommunikation zwischen zwei Prozessen zu ermöglichen. Entweder per Datei, TCP Funktionen (client/server) oder auch per stdinwrite + consoleread. Letztere Variante setzt aber glaube ich vorraus, dass das Script welches die Daten erhalten soll vom sendenden Script aus gestartet wurde. Die Dateimethode ist eher wenig performant und unschön, die TCP Variante hingegen am aufwendigsten und ggf. aufgrund von Firewalls oder anderen Prozessen die die selben Ports verwenden nicht zuverlässig genug.

    [autoit]


    filewrite()
    fileread()
    tcpsend()
    tcprecv()
    stdinwrite()
    consoleread()

    [/autoit]
  • Danke, bis auf das letztere (was auch nicht funktioniert) kannte ich die Funktionen schon.
    Nur denke ich das es per Datei nicht ganz optimal in der Ausführung und Performace funktioniert und per TCP habe ich es mit Einschränkungen bei mir zum laufen bekommen. Ich danke das kann man auf einen fremden Rechner vergessen.

    Ich hatte es so per ini gelöst:

    [autoit='asdasd']

    while 1
    if $zeit < (@HOUR & @MIN & @SEC & @MSEC) then
    GUICtrlSetData($ctrl_p1, IniRead($ini_datei, "prozess", "param1", "###"))
    GUICtrlSetData($ctrl_p2, IniRead($ini_datei, "prozess", "param2", "###"))
    $zeit = (@HOUR & @MIN & @SEC & @MSEC) + 500
    endif
    wend

    [/autoit]

    Es wird alle 0,5s die ini abgefragt ... die CPU-Auslastung ist nicht merkbar.

    Wenn jemand doch noch eine andere Lösung im Ärmel hat, nur her damit ;)

  • Eine Weitere Möglichkeit um zwischen 2 Programmen zu kommunizieren wären die - ich nenne sie mal - "virtuellen F-Tasten".
    Zur Verdeutlichung mal ein kleines Script:

    [autoit]

    HotKeySet("{234}","druck")
    Sleep(5000)
    Send("{F234}")

    [/autoit][autoit][/autoit][autoit]

    Func druck()
    MsgBox(0, "", "Es wurde gerade F234 gedrückt.")
    EndFunc

    [/autoit]

    Edit: Mh, geht doch nicht so super, egal was für ein F>12 gedrückt wird, es wird nix unterschieden. Aber du kannst ja deinem Script das Morsealphabet beibringen, dann kannst du Strings übergeben ^^.