PDA

View Full Version : AS400 Schriftfarbe per Excel Makro auslesen



petzi-mg
21-05-15, 13:27
Ich versuche die Schriftfarbe einer bestimmten Position in einem AS-400 Fenster aus einem Excel-Macro heraus zu bestimmen. Die Textfarbe kann entweder Grün(=Standart) oder Rot sein.
Da es keinen direkten Weg dafür zu geben scheint ('GetColor' funktioniert nicht), versuche ich es über den Umweg 'autECLSession.autECLPS.WaitForAttrib' mit einer Millisekunde Wartezeit - bei Timeout sollte der Wert 'False' zurückgegeben werden = Schrift ist nicht Grün oder eben 'True' = Schrift ist Grün.

Ich weiß aber nicht , was für Werte ich eingeben muss.
autECLSession.autECLPS.WaitForAttrib(row, col, Waitdata, [optional] MaskData, [optional] plane , [optional] TimeOut, [optional] WaitForIr)

Kann mir jemand weiterhelfen? Bin ich sowieso komplett auf dem falschen Weg, und/oder weiß jemand einen besseren?
Vielen Dank im voraus.

Fuerchau
21-05-15, 15:32
Ich würde mir da eher die Bedingung hierfür mittels SQL über ODBC holen!
Es gibt sicherlich einen datentechnischen Grund warum ein Wert in Rot dargestellt wird.
Diesen kann man sicherlich auch per SQL erfragen.

Für die 5250-Emulation gibt es noch andere API's: HLLAPI/EHLLAPI
Wenn das CA-Toolkit mit installiert ist, kannst du im Verzeichnis
C:\Program Files (x86)\IBM\Client Access\Toolkit\Include
die Datei ehlapi32.h betrachten um herauszufinden, wie man von einer Sitzung ein bestimmtes Feld/Attribut abfragt.

Aber wie gesagt, SQL ist einfacher und sicherer.
Ein User kann ja auch mehrere Fenster aufhaben.

petzi-mg
21-05-15, 17:00
Ja, würde ich auch lieber eleganter lösen, hab aber ebenfalls Gründe, warum ich es so lösen muss. Leider hab ich z.B. keinen SQL etc Zugriff, sondern muss mich mit den beschränkten Möglichkeiten zufrieden geben, die das Sitzungsfenster mir bietet. Unsere EDV-Profis würden mich auch bestenfalls auf ihr To-Do-Liste setzen und in ungefähr zwei Jahren (eventuell) prüfen, ob sich der Aufwand lohnt. Was vermutlich nicht der Fall sein wird, weil nicht alle Filialen das nutzen würden... :rolleyes:

Das mit den anderen API's werde ich prüfen. Bis dahin würde ich mich sehr freuen, wenn jemand eine Idee zu meiner urspünglichen Frage wegen den WaitForAttrib hätte.

petzi-mg
22-05-15, 07:10
Hab das Problem gelöst, wer das Handbuch liest ist klar im Vorteil.
Versucht hatte ich:
autECLSession.autECLPS.WaitForAttrib(7, 6, 0, "3c", 2, 1) in diversen Variationen

Der Farbwert (dritte Position) muss aber als 1-Byte Hex geschrieben werden. Richtig ist also:
autECLSession.autECLPS.WaitForAttrib(7, 6, "00", "3c", 2, 1)