Guten Tag, ich habe ein paar lästige Routine-Aufgaben in einem Programm ohne Skriptunterstützung mithilfe von AutoIt automatisiert (klick dort, gibt das ein, drück Enter, usw.) Das Problem ist, dass ,solange das AutoIt-Skript läuft, ich den Rechner nicht anderweitig verwenden kann. Nun wollte ich fragen, ob es eine Möglichkeit gibt (z. B. Win32-API), entsprechende Nachrichten an das Fenster zu schicken, so dass ich den Rechner trotzdem noch anderweitig nutzen kann. Ich kann C# und weiß auch wie man Win32-Dlls einbindet, da ich das mal für Highperformance-Counter gebraucht habe, sonst hatte ich bisher mit Win32 nichts am Hut und vielleicht kann mir hier ein Profi die Richtung weisen. Wenn es was anderes gibt was folgende Anforderungen erfüllt, gerne: - (Links-)Klick an bestimmte Stelle im Fenster, relativ zur Fenster Position wäre perfekt (zur Ecke links/oben) - Tastatureingaben schicken: <Taste>, CTRL+<Taste>, ALT+<Taste> - optional: Funktioniert auch wenn Fenster überlagert/minimiert Das würde mir schon reichen. Die relevante Prozess-ID bekomme ich schon mit C# Bordmitteln raus.
Kann AutoIt3 normalerweise mit Boardmitteln. ControlSend() und ControlClick(). Die sind aber manchmal was zickig.
Wenn dein Rechner genug Speicher hat - das ganze System innerhalb einer virtuellen Maschine laufen lassen.
Minimalist schrieb: > Kann AutoIt3 normalerweise mit Boardmitteln. > ControlSend() und ControlClick(). Die sind aber manchmal was zickig. Danke, wenn ich das richtig lese muss ich dazu das Control lokalisieren, richtig? Gibt es Tools um mir den UI-Tree / das Control geben zu lassen? Noch eine Meinung schrieb: > Wenn dein Rechner genug Speicher hat - das ganze System innerhalb einer > virtuellen Maschine laufen lassen. Das wäre meine Lösung der Wahl gewesen, leider kann ich hier keine VM-Software installieren.
Man sollte heute nicht mehr blockierend programmieren. Das war vor 30 Jahren.
тролхантэр schrieb: > Man sollte heute nicht mehr blockierend programmieren. Das war vor 30 > Jahren. Verstehendes Lesen ist heute wohl nicht mehr "in". Komplett falsche Baustelle. Es geht bei AutoIT um das Problem das mit Maus- und Tastatureingaben ein Programm "ferngesteuert" wird. Dabei würden "echte" Eingaben des $Lusers extremst stören - und genau das verhindert auch das gleichzeitige Arbeiten.
Effizienz-Detektor schrieb: > Nun wollte ich fragen, ob es eine Möglichkeit gibt (z. B. Win32-API), > entsprechende Nachrichten an das Fenster zu schicken, so dass ich den > Rechner trotzdem noch anderweitig nutzen kann. Ja. Hier steht alles https://docs.microsoft.com/de-de/windows/win32/apiindex/api-index-portal Fenstehandle holen (anhand Pfad/Dateiname des gewünschten Programms), prüfen ob das Programm läuft und dann die Nachrichten ans gewünschte Fenster/Fensterelement schicken. Viel Spaß ;-)
Effizienz-Detektor schrieb: > Danke, wenn ich das richtig lese muss ich dazu das Control lokalisieren, > richtig? Jepp. > Gibt es Tools um mir den UI-Tree / das Control geben zu lassen? Jepp. In früheren Versionen des VisualStudio gab es dafür z.B. Spy++, bei Delphi gab es ein ähnliches Tool namens WinSight32. Wenn ich mich aber noch so halbwegs richtig erinnere, gibt (oder gab) es im Lieferumfang von AutoIt ein zu den genannten Tools vergleichbares Werkzeug. Sicher bin ich mir nach all den Jahren zwar nicht mehr, aber es ergibt Sinn. Weil AutoIt sowieso alle für ein solches Tool nötigen Funktionen können muss. Wenn man's sowieso schon implementiert hat, kann man's auch mit ausliefern... Also vielleicht mal die Doku von AutoIt lesen?
Wenn die Systemversion es zulässt, oder man RDP-Wrapper installiert, eine zweite Session aufmachen und das Skript starten. Dann Session trennen (nicht abmelden) bzw. Benutzer wechseln und in der anderen Session arbeiten ... Dann braucht man (im Gegensatz zu einer VM) keine zwei vollständigen Systeme.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.