SendKeys

  • Wir haben bei uns in der Bank von unserem Rechenzentrum eine Anwendung für Kundendaten.
    Ich habe nun von einem externen Programmierer einen Code programmieren lassen mit dem ich über Lotus Notes Abfragen in der Rechenzentrums-Anwendung starten kann.


    Dazu kopiert Notes einen bestimmten Wert in die Zwischenablage, wechselt mit AppActivate zu der Anwendung springt über SendKeys (F12-Taste) dort in ein bestimmtes Feld, fügt den Wert aus der Zwischenablage ein und bestätigt das mit SendKeys (Returntaste).


    Das Ganze funktioniert soweit auch sehr gut. Ich habe nur bei 2-3 Mitarbeitern das Problem das das Ganze nur einmal funktioniert und dann nicht mehr. Nur wenn ich in der Zielanwendung einmal manuell einen Aufruf starte funktioniert die Verknüpfung über Notes wieder einmal. Das ist sehr nervig. Bei den anderen 10-15 Mitarbeitern läuft das super.


    Der externe Programmierer hat dafür auch keine Erklärung. Ich hoffe nun das mir hier vielleiche jemand ein paar Tipps geben kann, die mir zu Lösung weiterhelfen können.


    Wir haben die Version 8.5 im Einsatz. Die PCs und Anwendungen der Mitarbeiter sind 100% identisch (gleiche Hardware und gleiche Software) und die Mitarbeiter haben auch genau die gleichen Rechte. Die Anwendung wird nämlich nur in einer Abteilung eingesetzt, die wir komplett neu eingeführt und eingerichtet haben.


    Bin für jeden Tipp dankbar.

    "Es liegt allein an uns, ob wir aus den vielen Steinen, die auf unserem Weg liegen, Mauern oder Brücken bauen."

    • Offizieller Beitrag

    Nur ein Ansatz zur Fehlersuche!


    Welches SendKeys wird verwendet (Notes oder Win-API)?
    Sind die Tastenkombinationen bei den Usern immer die gleichen?
    Die verwendete Software hat die gleiche Sprache?
    Die verwendten Programme sind gestartet / nicht gestartet?
    Die verwendeten Programme sind minimiert / maximiert / im Fenster geöffnet?
    Der Fokus wird richtig gesetzt?


    Spiele mal die Tastenanschläge von Hand bei den betroffenen Usern durch.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Welche Version Sendkey weiß ich nicht. Hier mal ein Auszug aus dem Code. Vielleicht könnt Ihr ja daran erkennen welcher das ist:


    PressKey VK_Fn + 12
    HoldKey VK_CONTROL
    SendKey "a"
    ReleaseKey VK_CONTROL
    SendString s
    PressKey VK_RETURN


    Wie gesagt. Die Software, die Hardware und auch die Notes-DB sind bei allen Usern die gleiche.


    Das Zielprogramm ist bei allen immer als Fenster geöffnet. Wenn ich in der Anwendung F12 und dann Strg-A drücke und dann meinen Code eingebe und RETURN drücke funktioniert das. Mit SendKey aber nicht, das aber nur bei diesen beiden Usern. Nachdem ich das einmal manuell gemacht habe geht es ja auch wieder einmal über Notes. Bei allen anderen Usern geht es immer.


    Mir kommt es so vor als ob das Problem nicht unbedingt am SendKeys sondern schon vorher am Appactivate liegt. Das Programm scheint beim zweiten mal nicht mehr aktiviert zu werden.

    "Es liegt allein an uns, ob wir aus den vielen Steinen, die auf unserem Weg liegen, Mauern oder Brücken bauen."

  • Ja, genau um den BAP geht es. Habt Ihr da etwa eine funktionierende Lösung?

    "Es liegt allein an uns, ob wir aus den vielen Steinen, die auf unserem Weg liegen, Mauern oder Brücken bauen."

  • Na dann Hallo, fiducia-geplagter Kollege ;)


    Also mit SendKeys aus LotusScript hatte ich auch die Probleme wie oben beschrieben, vor allem durfte da das BAP-Fenster nicht minimiert sein.


    Zuverlässiger gehts über die Windows-Script-Shell.


    Probiers in Deinem LS-Agent einfach mal mit folgendem Code (Quick and Dirty, ohne Fehlerbehandlung etc...)


    Set objWSHShell = CreateObject("WScript.Shell")
    objWSHShell.AppActivate "agree Bankarbeitsplatz"
    objWSHShell.SendKeys "%" + " " + "W" 'Holt Fenster in Vordergrund
    objWSHShell.SendKeys "{F12}"
    Sleep(0.1)
    objWSHShell.SendKeys "1000, 1900" 'Funktions-ID (hier Personendaten anzeigen und Parameter)
    Sleep(0.1)
    objWSHShell.SendKeys "{ENTER}"


    Ggf. die Sleep-Zeiten noch ein wenig höher setzen, je nachdem wie schnell Eure Rechner sind.


    P.S. therookie aka Schmitti aus Adminconsult?

  • Vielen Dank für die schnelle Antwort. Das probiere ich auf jeden Fall mal aus.


    PS: Ja, Schmitti ist TheRookie ;)

    "Es liegt allein an uns, ob wir aus den vielen Steinen, die auf unserem Weg liegen, Mauern oder Brücken bauen."