Skript, das den Inhalt eines Fensters ausliest

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Skript, das den Inhalt eines Fensters ausliest

08 Jan 2018, 10:06

Hi, ich bin neu hier und hab von AHK keine richtige Ahnung. Programmieren kann ich auch nicht wirklich :-(

Aber ich schaffe es mit trial'n error meist, vorhandene Beispiele so einigermaßen zu verstehen und anzupassen.

Was will ich erreichen: Ich habe ein Programm, das mir diverse Statusinfos eines Fotodruckers in einem Fenster anzeigt. Einige diese Infos möchte ich gerne auslesen und in eine Textdatei schreiben.
Das ist einmal die verbleibende Papiermenge und dann der Status des Druckers (warten, Drucken, Fehler etc).
Ich würde diese werte gerne in einem gewissen Intervall (60 Sekunden) auslesen. Der neue Wert soll den alten im Logfile überschreiben.

Mit Winspy habe ich die Class und ClassNN des jeweiligen Bereichs ermittelt, der ausgelesen werden soll. Kann mir jemand ein Beispielskript oder zumindest das Gerüst für solch einen Task schicken?

Vielen Dank schonmal im Voraus!
BoBo
Posts: 2119
Joined: 13 May 2014, 17:15

Re: Skript, das den Inhalt eines Fensters ausliest

08 Jan 2018, 10:51

Die etwas 'professionellere' methode wäre das abgreifen solcher infos über den treiber. Dazu gibt es schon einige brauchbare scripte im (mutter)form.
Das abfragen im interval würde mittels SetTimer-routine bewerkstelligt.
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

08 Jan 2018, 11:08

Das wäre natürlich toll, ich bezweifle aber, dass es für diesen Drucker etwas gibt, ist ein Thermosublimationsdrucker von DNP, der DS-RX1.
Meine umfassende Recherche im Netz hat zumindest ergeben, dass man diese Werte nicht einfach so an anderer Stelle abgreifen kann. Aber ich lasse mich gern eine Besseren belehren...
just me
Posts: 5090
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Skript, das den Inhalt eines Fensters ausliest

08 Jan 2018, 11:25

Moin,

es wäre hilfreich, wenn Du uns die per WinSpy ermittelten Daten der für Dich interessanten Controls und eine Beschreibung / Beispiel des jeweiligen Inhalts zur Verfügung stellen könntest. Wenn Du die Daten alle 60 Sekunden aus einem Programmfenster abgreifen willst, muss das Programm auch alle 60 Sekunden zumindest für kurze Zeit laufen. Willst Du das wirklich so?
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

08 Jan 2018, 13:05

Ja, das Fenster soll permanent offen sein. Vielleicht funktioniert es auch, wenn es minimiert ist, das wäre aber nicht so wichtig. Ich mache nachher mal einen Screenshot und poste die Classes aus Winspy. THX!
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

08 Jan 2018, 15:06

Hier ist der Screenshot. Ich habe die relevanten Bereiche eingefärbt. Ich hoffe, das hilft als Info weiter?

gelber Bereich:
Handle: 0x3063C
Class: WindowsForms10.STATIC.app.0.378734a
ClassNN: WindowsForms10.STATIC.app.0.378734a16

roter Bereich:
Handle: 0x20644
Class: WindowsForms10.EDIT.app.0.378734a
ClassNN: WindowsForms10.EDIT.app.0.378734a1

RX1-Screenshot.jpg
RX1-Screenshot.jpg (83.46 KiB) Viewed 244 times
just me
Posts: 5090
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Skript, das den Inhalt eines Fensters ausliest

09 Jan 2018, 04:40

Moin,

danke für die Info. Du kannst mal Folgendes probieren:

Starte das Statusprogramm und anschließend folgendes (ungetestetes) Skript:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus


Wenn Du dann den Hotkey Strg+Shift+a auslöst und die richtigen Daten ausgegeben werden, bist Du auf dem richtigen Weg.

Übrigens: Muss bei ständig offenem Fenster der Button Aktualisieren gedrückt werden, damit die Werte neu eingelesen werden?
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

09 Jan 2018, 07:14

@just me, das funktioniert, vielen Dank dafür! :superhappy:

Ich versuch dann mal, mich durchzuwurschteln bezüglich Ausgabe in ein Logfile etc...

Und Nein, der Wert wird automatisch aktualisiert :bravo:
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 05:28

So, das Skript läuft jetzt soweit.
Was nicht funktioniert, ist das Schreiben in die Datei im Else-Teil, also wenn das Fenster nicht gefunden wurde.
Es hat schon funktioniert, jetzt plötzlich nicht mehr. Und ich finde nicht raus, was ich geändert habe:think:

Code: [Select all] [Expand] [Download] (Unbenannt.ahk)GeSHi © Codebox Plus



Darüber hinaus die Frage: ist es möglich, den Inhalt auszulesen, wenn das Fenster minimiert ist?
Edit: Nevermind, hab's gefunden:

Ich liebe AHK!
BoBo
Posts: 2119
Joined: 13 May 2014, 17:15

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 06:00

Ich sehe kein else, damit würde die section nach dem if grundsätzlich ausgeführt, überschreibt also das if-gedöns (?)
!Winexist() <> WinExist()
just me
Posts: 5090
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 06:23

Moin,

BoBo hat recht. Und in meinem Beispiel war das

Code: [Select all] [Download] GeSHi © Codebox Plus

If !WinExist(WinTitle) ; bei Erfolg wird das 'Zuletzt Gefundene Fenster' gesetzt -> https://ahkde.github.io/docs/misc/WinTitle.htm
{
MsgBox, 16, Test, Das Fenster %WinTitle% wurde nicht gefunden! ; der Fenstertitel stimmt offensichtlich nicht
Return ; <<<<<
}

SetTimer, Statusauslesen, 10000 started den Timer alle 10 Sekunden. Der Timer hinterlässt dann genau eine Zeile in der Statusdatei. Mir erschleßt sich der Sinn bisher nicht.
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 06:49

Das kommt davon, wenn man keine rechte Ahnung vom Coden hat, jetzt funktioniert es wieder, danke!

Der Sinn ist der folgende:
Das Skript liest alle 10 Sekunden die Werte aus und schreibt sie in eine Textdatei. Diese Textdatei wird von einem Powershell-Skript ausgelesen, das diese Werte in eine sqlite-Datenbank schreibt. Und ich kann dann auf einem Webinterface ablesen, wie der Status des Drucker ist und wieviele Bilder noch gedruckt werden können.
BoBo
Posts: 2119
Joined: 13 May 2014, 17:15

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 07:00

FYI. Du kannst mit AHK auch direkt die sqlite-datenbank beschreiben.
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 07:18

Das dachte ich mir schon, AHK kann ja scheinbar alles.
Aber das Skript macht noch mehr Sachen und existiert auch schon. Da ist dieser Umweg vermutlich einfacher.
BoBo
Posts: 2119
Joined: 13 May 2014, 17:15

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 09:09

Falls du an das PS rankommst, ließe sich mal schaun ob das alles in gänze mit AHK machbar ist. Erspart eine schnittstelle - denn jede zusätzliche birgt ein potentielles (laufzeit)risiko (oder sei es, das der PS-guru in eurem laden im lotto gewinnt ;) ).

... Erm, und außerdem - AFAIK läßt sich ein PS-script sogar direkt in AHKcode einbetten :mrgreen:
Commander Keen
Posts: 9
Joined: 08 Jan 2018, 09:54

Re: Skript, das den Inhalt eines Fensters ausliest

10 Jan 2018, 10:21

@BoBo, danke für das Input! Da kümmert sich dann das Zukunfts-ich drum :lol:

Du hast natürlich recht, wäre besser wenn alles aus einem Guss ist...

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 5 guests