Bereits laufendes Programm mit Python steuern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Chris83
User
Beiträge: 4
Registriert: Donnerstag 29. März 2018, 14:26

Hallo,

ich bin recht neu bei der Programmierung mit Python und verzweifle gerade daran ein bereits laufendes Programm mit Python zu kontrollieren. Normalerweise würde ich das Prgramm direkt aus python starten. Das ganze sieht so aus, und funktioniert prinzipiell auch. Jedoch funktionieren dann einige Funktionen in dem Programm nicht, weshalb ich es gerne manuell starten würde um dann im Anschluss das Python Skript für die Automatisierung zu verwenden.


Code: Alles auswählen

import os, sys
# Import the Controller functions
# From the Automation library, this is the controller that is used to launch PSCAD. 
import automation.controller 
controller = automation.controller.Controller()
pscad = controller.launch("PSCAD 4.6.0 (x64)")
Im Anschluss nach dem launch Befehl kann ich dann alles mögliche machen, jedoch funktioniert das programm so einfach nicht richtig.

Meine Idee ist es das Programm manuell zu starten und dann mit Python die Fernsteuerung zu übernehmen. Nur wie kann ich das genau angehen. Ich muss ja in diesem Fall der variable "pscad" einen Zeiger auf das laufende Programm zuweisen. Ich denke mal, dass ist die PID, richtig?
Falls ja, wie mache ich dies? Die PID kann ich ja im TaskManager von Win7 problemlos rausfinden, nur der Befehl pscad = 12345 bringt natürlich nicht das richtige Ergebnis. ;) Wäre für jede Hilfe dankbar!
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ob das geht haengt von der API deines Programmes ab. Da muesstest du mal in die Doku schauen. Einen generischen "du musst nur schnibbelburz-padamm machen" Weg gibt's nicht.

Du kannst die Doku hier natuerlich auch posten, dann kann man mal da reinschauen.
Chris83
User
Beiträge: 4
Registriert: Donnerstag 29. März 2018, 14:26

Hallo,

danke für deine Antwort. Die "Dokumentation" findet sich hier:

https://hvdc.ca/uploads/knowledge_base/ ... 1480439491

Ich würde sie mal freundlich als übersichtlich bezeichnen....



Wenn ich das Programm manuell starte, werde ich von Windows jedes mal gefragt, "ob das Programm Änderungen an meinem PC vornehmen darf". Ohne ihm die Rechte zu gewähren, kann ich es gar nicht starten. Wenn Python das Programm startet kommt die Abfrage jedoch nicht...

Das einfachste wäre sicherlich, wenn ich mich als admin einlogge aber da das hier nicht mein Computer ist, ich das Programm bei mir privat nicht installieren kann, scheidet diese Option leider aus. :(
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was das Rechte-gefummel jetzt mit deiner Frage zu tun hat erschließt sich mir nicht.

Wie dem auch sei: die Doku ist nicht doll, aber du kannst mit dem Controller ja die Anwendung starten. Da kannst du zb im interaktiven Pythin Interpreter mal schauen, ob du da noch mehr Methoden findest, um dich zb mit einer laufenden Instanz zu verbinden.
Chris83
User
Beiträge: 4
Registriert: Donnerstag 29. März 2018, 14:26

Wenn ich mit Python das Programm PSCAD starte, funktioniert es leider nicht richtig. Mein Verdacht ist, dass es an den fehlenden Rechten liegt....

Danke für den Tipp, werde ich heute Nachmittag gleich ausprobieren. Mal schauen ob es klappt. :)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ah. Das waere natuerlich eine relevante Information gewesen. Ich wuerde dann eher probieren, die Rechteprobleme irgendwie zu loesen. Wobei das eher eine Frage fuer den Support von PSCad ist.
Chris83
User
Beiträge: 4
Registriert: Donnerstag 29. März 2018, 14:26

ja, wenn der mal antworten würde.....

Wenn ich heute nach einer Woche Wartezeit keine Antwort vom Support kriege, werde ich ihm dann täglich auf die nerven gehen.

Bin jetzt den Großteil des Python Interpreters durchgegangen. Leider mit mäßigem Erfolg. Ich könnte natürlich versuchen den Prozess des Startens und der Verbindung zu Python manuell auszuführen...

Eine vorerst letzte Frage: Gibt es eine Möglichkeit in Python einen Parameter zu übergeben, dass der zu startende Prozess als admin ausgeführt wird?
Im Interpreter müsste diese Zeile für das Starten von PSCAD zuständig sein:

Code: Alles auswählen

args = [path, '/startup:au', '/host:localhost', '/port:'+str(port), '/nologo']
self._proc = subprocess.Popen(args, close_fds=True, startupinfo=sui)
Die Administrator Eingabeaufforderung benutze ich schon, jedoch ohne Erfolg.


Auf jeden Fall schon mal vielen Dank für deine Geduld und Hilfe!
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Um schon mit Admin-Rechten zu starten brauchst du das "runas"-Kommando, und das musst du davor packen:

https://stackoverflow.com/questions/205 ... -in-python
Antworten