"Vordergrund-GUI" für vorhandene Anwendung

  • Hi!

    Würde gerne unserem Warenwirschaftssystem (Selectline) per AutoIt ein paar nützliche Zusatzfunktionen verpassen, z.B. Auslesen eines bestimmten Eingabefeldes, Brutto/Netto Umrechnen des da stehenden Wertes und Zurückschreiben des Ergebnisses in dasselbe Feld.

    Das Auslesen/Zurückschreiben ist prinzipiell kein Thema, auch der Start der jeweiligen Routine ließe sich zwar per Hotkey lösen, aber leider fängt Selectline etliche Tastenkombinationen selber ab, und unter den Usern hier ist sowieso die "Mausschubserfraktion" deutlich in der Überzahl, sprich was sich nicht per Maus machen läßt (selbst wenn´s per Tastatur viel schneller ginge), wird konsequent ignoriert.

    Dachte daher eher an sowas wie eine kleine "Toolpalette", die sich immer im Vordergrund befindet, aber wenn dort irgendwo daufgeklickt wird, dann verliert ja das Selectline Fenster den Fokus, so daß das Script die ID des gerade im Selectline Fenster aktiven Eingabefelds, das es auslesen und ggf. zurückschreiben soll, nicht ermitteln kann.

    Direktes Ansprechen des Eingabefelds über eine im Script fest vergebene ID scheidet auch aus, weil für dieselbe Funktion mehrere Eingabefelder in Frage kommen. Außerdem hat sich herausgestellt, daß Selectline bei Updates die IDs der Eingabefelder gerne mal ändert.

    Ich müßte also irgendwie feststellen, welches Eingabefeld im Selectline Programmfenster in dem Augenblick unmittelbar VOR dem Klick auf den AutoIt Palettenbutton aktiv war.

    Any hints?

  • Hmm sollte ein brauchbares Warenwirtschaftssystem nicht selbst in der Lage sein Brutto/Netto Umrechnungen zu erledigen? Das was du da vor hast klingt mit verlaub Gesagt nach ziemlicher Murkserei.

    Zitat


    4. Wie sieht es mit Pflege und Wartung aus?
    Programme von heute sind morgen meist schon ein alter Hut. Doch wer hier immer "up to date" sein will, der muss oft tief in die Tasche greifen. SelectLine Software geht auch hier einen neuen und anwenderfreundlichen Weg. In einer monatlichen Wartungspauschale sind alle Updates und Upgrades inbegriffen. Versionswechsel? Ebenfalls inklusive! Sie sind immer auf dem neuesten Stand und können Ihre Kosten kalkulieren.

    5. Kann die Software auch meine individuellen Wünsche berücksichtigen?
    Bereits mit unseren Einstiegslösungen bieten wir eine so große Funktionsvielfalt, dass wir den Bedarf unserer Kunden meist komplett abdecken. Auf der anderen Seite gibt es immer wieder notwendige Individualfunktionen, die - je nach Branche und Unternehmen - für einen reibungslosen Geschäftsbetrieb erforderlich sind. Unsere Softwarelösungen können mit Ihrem Erfolg mitwachsen. Ein Programm von SelectLine Software zu erwerben bedeutet Investitionssicherheit für viele Jahre.

    Darf man dem Glauben schenken wäre es vielleicht ratsam sich mit dem Hersteller zu unterhalten anstatt selbst etwas dazu zu schustern was das Programm derzeit nicht kann.


    Ok zurück zu deiner Frage:

    So wie ich das verstehe müsste dein Programm permanent in kurzen Intervallen das Programmfenster auf Eingaben / aktuelle Auswahl überwachen und das zuletzt aktive Control auslesen. Sollte denke ich durchaus realisierbar sein.

    pseudocode:

    [autoit]


    $win="fensterhandle des zu überwachenden programms"
    $value=""

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

    ; gui erstellung.... mit set on top wenn du es immer im vordergrund haben willst

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

    ;
    while 1
    $focus=wingetstate($win)
    if $focus = true then $value = getcontrolvalue(getfocusedcontrol()) ; value wird nur ausgelesen wenn das fenster noch den focus hat, ansonsten steht in value noch der wert der vor dem focus verlust ermittelt wurde... natürlich so nur pseudocode
    $msg=guigetmsg()
    switch $msg
    case $exit
    exit
    case $button1
    funktion1($value)
    endswitch
    sleep(20) ; kleine pause, da deine mausschubser sicher nicht so schnell klicken und tippen
    wend

    [/autoit]