Dienstag, 16. April 2024, 11:07 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

felixhn Männlich

Benutzer

Registrierungsdatum: 1. März 2004

Beiträge: 63

Wohnort: Kiel

1

Donnerstag, 28. Januar 2010, 21:47

Aufgabenplanung startet AutoIt-Datei nicht

Hallo,



auf einem Windows 7-Rechner soll AutoIt die TWS-Ausschaltzeit verschieben. Datei ist geschrieben und kompiliert. Die exe-Datei kann durch Doppelklick vom Desktop aus gestartet werden und tut das, was sie soll. Ich habe in der Aufgabenplanung die Datei zu einer bestimmten Uhrzeit zur Ausführung eingetragen.



Das Script sieht wie folgt aus:


WinWait("UX - Interactive Brokers Trader Workstation","")
If Not WinActive("UX - Interactive Brokers Trader Workstation","") Then WinActivate("UX - Interactive Brokers Trader Workstation","")
WinWaitActive("UX - Interactive Brokers Trader Workstation","")
ControlSend("UX - Trader Workstation Configuration","","","{ALTDOWN}e{ALTUP}vl")
WinWait("UX - Trader Workstation Configuration","")
If Not WinActive("UX - Trader Workstation Configuration","") Then WinActivate("UX - Trader Workstation Configuration","")
WinWaitActive("UX - Trader Workstation Configuration","")
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{SPACE}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{TAB}")
Sleep(20)
ControlSend("UX - Trader Workstation Configuration","","","{SPACE}")





Wenn ich nach dem eingestellten Zeitpunkt wieder kontrolliere, ist die Umstellung nicht erfolgt. Die Aufgabenplanung zeigt: "Der Task wird momentan ausgeführt (0x41301)." Irgendwas scheint zu hängen.



Hat jemand eine Idee, woran das liegt? Ich meine doch alle Hinweise von Bernd beachtet zu haben, oder?



Vielen Dank,

Felix

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

2

Donnerstag, 28. Januar 2010, 23:00

einfach mal den Zeitpunkt provozieren durch "geschicktes" einstellen der Uhrzeitpunktes.

und dabei am Bildschirm zuschauen, was passiert.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

3

Freitag, 29. Januar 2010, 09:53

Hallo felixhn,

wie Du es beschreibst, startet der Taskplaner ja die AutoIt .exe.

AutoIt scheint Probleme damit zu haben, die Fenster der TWS zu bearbeiten. Das liegt wohl daran, dass TWS ein Java Programm ist. Das ist bei mir auch so.

Ich behelfe mir damit, dass ich abends das TWS Fenster an einer bestimmten Stelle des Bildschirms platziere und es dann im AutoIt Skript erstmal durch einen Mausklick an die entsprechende Bildschirmstelle aktiviere. Trotzdem habe auch ich ab und zu Probleme mit dem Ansprechen der TWS und der Bearbeitung ihrer Menüs.

Viele Grüße
Cornelius

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

4

Freitag, 29. Januar 2010, 11:56

AutoIt scheint Probleme damit zu haben, die Fenster der TWS zu bearbeiten. Das liegt wohl daran, dass TWS ein Java Programm ist. Das ist bei mir auch so.

Das ist richtig. Java verwendet völlig andere Libraries als Windows, um den Bildschrim zu organisieren. Der Grund ist meist, dass die Java Programme ja auch auf *nicht Windows* Umgebungen lauffähig sein sollen.

AutoIt ist gut an die Windows Libraries angepasst - aber Java Fenster sind für es nicht viel mehr als Bitmaps, es kann vor allem nicht "reingucken" oder gar die Java-Controls mit Namen direkt ansprechen. Desswegen muss man so umständlich mit simulierten Tastendrücken oder Maus-Aktions herumhantieren! In meinem Script myTWSStart verwende ich einen kleinen Trick, um es doch einigermassen mit AutoIt machen zu können: ich checke das Fenster der RTT/IB, welches sich ja per API an die TWS gekoppelt hat - und leite daraus dann Aktionen ab. RTT kennt ja zuminest den Status der TWS, und in das RTT Windows Fenster kann man mit AutoIt ein bissl reingucken. Nicht schön, aber besser wie nix.

Es gibt analog zu AutoIt aber auch eine Anzahl von Java Automations-Tools. Ich habe diese bisher nicht probiert, weil dies im Moment keine Prio hat für mich; wer danach suchen möchte, wird sicher mit den Stichwörtern "java windows automation" fündig. So habe ich z.B. dies gefunden. Ich habe aber früher schon einmal intensiver gesucht und es gibt eine Menge in der Richtung im Web!

Felix, wenn Du Dich einarbeitest in die Java Automation der TWS, wäre es sehr nett, wenn Du später Deine Erfahrungen im Forum posten könntest!
Gruss
Bernd

felixhn Männlich

Benutzer

Registrierungsdatum: 1. März 2004

Beiträge: 63

Wohnort: Kiel

5

Freitag, 29. Januar 2010, 19:26

Hallo,



vielen Dank für Eure Ideen dazu.



Das faszinierende ist ja, dass es ohne controlsend bei einem Direktstart vom Desktop aus läuft. Ich dachte, dass es nur deshalb im Aufgabenplaner hängt, weil ich das controlsend verwenden musste. Also controlsend eingebaut - gleicher Effekt ("Der Task wird momentan ausgeführt.").



Vielleicht muss ich tatsächlich in die Java-Version einsteigen - vielen Dank für den Link, Bernd.



Felix

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

6

Freitag, 29. Januar 2010, 19:33

Was Du noch probieren könntest, auch wenn ich hier noch ein W7 habe, wird aber vielleicht so ähnlich sein wie Vista, der Aufabenmanager:
einplanen auf unterschiedliche Art, z.B. nur ausführen wenn Benutzer angemeldet ist vs. unabhöngig von Benutzeranmeldung ausführen. Und dann mal testweis so einplanen, dass Du beobachten kannst, was passiert. Wie Lenzelott es schon geschrieben hat.

Auch könntest Du so eine "Hallo Welt" Zeile reinbauen, um zu sehen, ob das .exe vom Taskmanager überhaupt gestartet wird!

Aus dem Taskmanager kann man auch eine Task sofort starten, dann musste nicht warten. Usw.
Gruss
Bernd

felixhn Männlich

Benutzer

Registrierungsdatum: 1. März 2004

Beiträge: 63

Wohnort: Kiel

7

Samstag, 30. Januar 2010, 16:04

Also, ob ich dieses Problem so schnell gelöst bekomme, bezweifle ich.



Es ist in jedem Fall ein Problem der Benutzerkonten. Es funktioniert, wenn der Benutzer angemeldet ist. Die Funktion "Unabhängig von Benutzeranmeldung ausführen" scheint überhaupt keine Funktion zu haben.



Eventuell liegt es aber auch daran, dass es eine Remote-Desktop-Sitzung ist.



Na ja, muss eben erstmal so bleiben

Felix

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

8

Sonntag, 31. Januar 2010, 12:54

In der Kombination Remote Desktop mit AutoIt habe ich auch schon viel Freude gehabt.

Bernd hat zum Thema gesperrter Computer & AutoIt glaube ich auch einiges geschrieben.
In wie weit dies bei Windows 7 auch zutrifft, fehlt mir leider die Erfahrung.
If you think it´s expensive to hire a professional, wait until you hire an amateur.