AutoIt auf remote Rechner

  • Erstmal ein Hallo in die Runde :P

    Ich bin ziemlich neu in der AutoIt Gemeinde. Daraufgestoßen bin ich, da ich einen RobotPc aufsetzen soll, der sich an einigen Aplikationen wie z.B. SAP anmeldet, einige Transaktionen ausführt und sich wieder abmeldet, sozusagen als Monitoring mit Zugriffszeitmessung. Folgendes Script nutze ich dafür


    $begin = TimerInit()

    ShellExecute("C:\Dokumente und Einstellungen\All Users\Desktop\Performancemessung\UKK SAP IS-H.sap")
    WinWaitActive("SAP Easy Access","",$timeout)
    CheckWindowTitle("SAP Easy Access - Benutzermenü für MaschinenUser ITrobot")
    ;Send("/nnp10{ENTER}")
    ControlSend("SAP Easy Access - Benutzermenü für MaschinenUser ITrobot","",1001,"/nnp10{ENTER}")
    WinWaitActive("Fallübersicht","",$timeout)
    CheckWindowTitle("Fallübersicht: Einstieg")
    ;Send("1{TAB}{TAB}{TAB}{TAB}{TAB}Test{TAB}Eva{F8}")
    Send("Test{TAB}Eva{F8}")
    WinWaitActive("Patientenliste","",$timeout)
    CheckWindowTitle("Patientenliste: Auswahl")
    Send("{F2}")
    WinWaitActive("Fallübersicht","",$timeout)
    CheckWindowTitle("Fallübersicht: Fallliste")
    Send("{F3}")
    WinWaitActive("Fallübersicht","",$timeout)
    CheckWindowTitle("Fallübersicht: Einstieg")
    Send("{F5}")
    WinWaitActive("Fallübersicht","",$timeout)
    CheckWindowTitle("Fallübersicht: Fallliste")
    Send("{DOWN}{RIGHT}{RIGHT}{SPACE}{F2}")
    WinWaitActive("KUK ambulante","",$timeout)
    CheckWindowTitle("KUK ambulante Abrechnung anzeigen: Datenbild")

    $dif = TimerDiff($begin)

    Das ganze funktioniert wunderbar, solange der PC nicht gesperrt ist. Dann bleibt er beim erstem Send stehen. ControlSend führt da leider auch zu keinem Erfolg, abgesehen davon daß die weiteren Fenster keine Control Info's liefern, daher die Tabs.

    Gibt es da noch Hoffnung ?( ? Das Ganze läuft auf XP Pro.

    Danke
    Paul

    Einmal editiert, zuletzt von yupepa (23. März 2011 um 16:42)

  • Hallo yupepa,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die deutsche Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deiner Frage: das ganze an einer gesperrten Arbeitsstation zu machen ist m.E. unnsinnig und würde falls es klappt deine Testdaten ad Absurdum führen, denn der User arbeitet später ja auch mit den echten Eingabemasken daher muss die Zeit für deren Aufbau auch in die Zeitmessung einfliessen,

    mfg autoBert

  • HalloautoBert,

    ich sehe es nicht so tragisch, da der Aufbau der Masken deutlich schneller ist als das Gesammtzeitverhalten. Ich bin halt nicht so glücklich darüber offene Rechner im Netz zu haben.

    LG
    Paul

  • Hallo autoBert,

    BlockInput funktioniert doch nur während das Script läuft, bei mir wenigstens. Auf jedenfall verhindert es schon mal störende Zugriffe während der Laufzeit. Nächste Idee wäre den Rechner am Ende des Scripts zu sperren und am Anfang wieder zu entsperren. Ctrl+Alt+Del kann man wohl nicht senden...was wäre die einfachste Möglichkeit?

    Danke
    Paul

  • Da laufen mehrere Scripte in 20 min Abständen, Neustart hat da nicht viel Sinn.

    mfg Paul

  • Hallo yupepa,

    dann musst du dir wohl eine andere Möglichkeit suchen, damit niemand an der unbeaufsichtigten Arbeitsstation Blödsinn macht, wie wäre es mit Zimmer abschliessen,

    mfg autoBert

  • So ganz verstehe ich dein Problem nicht. Lass ein Script in Endlosschleife laufen und sperre mit BlockInput() die Eingaben. Gibt auch noch eine UDF mit der du strg+alt+entf abfangen kann, damit niemand die Sperrung aufheben kann.

    Edit: Doch wieder gefunden.

    Du brauchst die: HotKey.au3

    Und so kannst du dann strg+alt+entf abfangen:

    Spoiler anzeigen
    [autoit]

    #Include <HotKey.au3>

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

    Const $VK_DELETE = 0x2E

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

    _HotKeyAssign(BitOR($CK_CONTROL, $CK_ALT, $VK_DELETE), 'Message', BitOR($HK_FLAG_NOOVERLAPCALL, $HK_FLAG_NOREPEAT))

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

    While 1
    Sleep(10)
    WEnd

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

    Func Message()
    MsgBox(0, 'Test', 'CTRL-ALT-DEL is pressed!')
    EndFunc ;==>Message

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (4. März 2011 um 08:28)

  • Super, werde ich bald testen.

    So wie es aussieht, werde ich ein Script wie vorgeschlagen, in einer Endlosschleife laufen lassen, dass sowohl strg+alt+entf abfängt, Eingaben sperrt und die Testscripts periodisch startet. Aktuell läuft es über einen AT Job.

    Danke
    Paul

  • Das hat ja nicht viel Sinn, da man jederzeit Remote dran kommt.


    Hat dein Script auf der Remotestation "nur" Userrechte, oder auch Adminrechte?

    Es wird ja irgendwie möglich sein
    - Alle aktuell vorhandenen Remoteverbindungen zu beenden
    - Allen Remoteusern die Rechte zur Remotesteuerung entziehen
    - Diese Rechte nach dem Scriptdurchlauf wiederherzustellen.

    Damit sollte das Problem mit "zwischenfunken" schonmal geklärt sein.
    Eventuell noch BlockInput und/oder dies hier

  • Hallo,

    hat ein bisschen gedauert, kam leider was dazwischen....

    Habe jetzt ein Script als Endlosschleife laufen, sperre mit BlockInput die Tastatur und rufe periodisch die entsprechenden Scripte auf. Sobald ich Zeit habe werde ich es allerdings umschreiben und statt BlockInput die BlockInputEx UDF nutzen mit der ich auch die Mauseingaben blocken kann.

    Vielen Dank für die Unterstüzung, ich schliesse jetzt den Thread.
    Paul

  • Also bei mir ist mit BlockInput(1) nur die Tastatur geblockt, mit der Maus kann ich überall wild rumklicken und auch das Script abbrechen.
    Paul

  • Mh sollte eigentlicht nicht möglich sein und war bei mir auch nie möglich.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • War ich auch erstaunt, habe es nicht erwartet. Mit der UDF klappt es. Läuft unter XP SP3

  • Also, auf meinem lokalem PC funktioniert BlockInput wie es soll, sperrt Tastatur und Maus. Remote sperrt es nur die Tastatur, die Maus ist voll funktonstüchtig. Mit der UDF sind auch die Maus eingaben gesperrt, den Cursor kann man weiterhin bewegen aber nichts anklicken. Das reicht mir soweit.