Hilfe bei der Automatisierung: Wie greife ich auf Felder in einer Herstellersoftware zu?

  • Hmm, das klingt interessant.
    Vielleicht sollte ich mir das mal genauer ansehen.
    Wie heißen die Befehle, damit ich das nachschlagen kann?
    Wie ist das, wenn ich das auf einem PC fertigstelle und dann auf einem anderen umsetzen will, ändern sich dann die Koordinaten?

  • Irgendwie stand nichts mehr da was ich grad geschrieben habe.


    Also die Coords stimmen im Info tool nicht mehr 100%tig glaube aber das liegt an der Windows GUI,

    aber hier hast du mal ein beispiel was peter meinte wenn ich richtig liege.

    Einmal editiert, zuletzt von MojoeB (3. Dezember 2024 um 08:58)

  • Hi,

    wie BananaJoe geschrieben hat macht eine Automatisierung von RibbonBars oder auch einfach von .Net Anwendungen nur Sinn mit der UI_Automation.
    Da führt kein Weg vorbei. Ich habe selbst erst kürzlich mich in dieses Thema einarbeiten müssen. Ist recht zeitintensiv bis man die Zusammenhänge alle verstanden hat. Aber Dinge wie click, click und Coords ist nicht zielführend. Leider setzen auch nicht alle Programmierer auf alternative Steuerung durch die Tastatur.
    Als Einstieg kann ich dir nur erklären, dass alle Objekte in .Net in hirarchischen Zweigen aufgeteilt sind. Diese Klassen haben dann die ganzen Objekte in sich wie Eingabefelder, Fenster, Grids, Buttons usw

    Mit Anwendungen wie UISpy und M$ Inspect kann man diese Hirarchie auslesen aus einem laufenden Programm und sich dann die Objekte heraussuchen, die man ansprechen möchte.

    Ist zeitraubend und aus meiner SIcht war das eher der Versuch die Automatisierer davon abzuhalten, diese Anwendungen zu steuern.
    Aber wie das so in einer Community ist, finden sich da immer findige Leute wie LarsJ, die sich die Zeit nehmen und das ganze für uns zerlegen.

    Daher kann auch ich nur empfehlen, lese die Beiträge von LarsJ, arbeite die Beispiele ab und mit der Zeit macht es bei dir klick und dann kannste loslegen.

    Das wird dir hier auch keiner "vorprogrammieren" können, da wir weder die Anwendung noch die darin enthaltenen Objekte und deren Namen kennen.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Hi Schnuffel 👋 ,

    sehr guter Beitrag meiner Ansicht nach. Ich stimme dir bei allem zu 👌 , bis auf eine Kleinigkeit:

    [...] da wir weder die Anwendung noch die darin enthaltenen Objekte und deren Namen kennen.

    Schau' dir gern mal den Spoiler-Text von Muecke_1982 aus dem post#13 an (und ja, sehr versteckt und untergegangen die Info dazu).
    Wir könnten es theoretisch nachstellen, doch wo bleibt dann der Lerneffekt 🤝 .

    Der Einstieg in UIA ist sicherlich einfacher, wenn man Erfahrung mit .NET (C# etc.) hat, doch die Beispiele von LarsJ sind gut und man kann sich durcharbeiten, ganz richtig. Vielleicht ist das für irgendjemand hier ein guter Auftakt um ein Tutorial zu erstellen (in welcher Form auch immer). Mich lockt es, doch Zeit habe ich dafür keine.

    Naja, freut mich von dir gelesen zu haben Schnuffel, gern auch wieder öfter 😁 .

    Viele Grüße
    Sven

  • wie heisst den die Software. Wenn die kostenlos ist, findet sich vielleicht jemand der dir einen funktionalen Ansatz liefert

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Wir könnten es theoretisch nachstellen, doch wo bleibt dann der Lerneffekt 🤝 .

    Ja, da gebe ich dir Recht, der Lerneffekt ist nicht wirklich da.

    Im Moment habe ich den Lernefekt, ich bin kein Programmierer, und für mich ist das alles ein bisschen verwirrend, und ich bekomme es nicht zum Laufen, der Aufwand, den ich habe, um die Hilfen zu erstellen (zum Klicken und Eingeben), ist zu groß, also unterm Strich bin ich wahrscheinlich schneller und frustfreier am Ziel, wenn ich es lasse.

  • Hi Muecke_1982 👋 ,

    kannst du bitte mal deine Schritte welche du automatisieren möchtest auflisten bzw. zeigen? Dann können wir entweder mit mouse actions konkret helfen bzw. zeigen wie es geht oder noch besser, direkt mit UIA arbeiten und genau deinen Ablauf mal ausprobieren/implementieren.

    Ich meine nicht, dass wir dir das komplett abnehmen werden (außer es fühlt sich jemand dazu berufen - dann gern auch so 😇), doch zumindest hättest du dann ein konkretes Beispiel wie es geht.

    Also was mir persönlich helfen würde sind Bilder mit einer Klickreihenfolge. Dann ist klarer was wann wie gemacht werden soll. Ein Video wäre natürlich noch toller, doch so wie es deine Zeit hergibt ... Bilder. Bin recht zuversichtlich, dass du dann Code bekommst, welcher dir ganz konkret helfen wird 👌 .

    Viele Grüße
    Sven

  • Hey SOLVE-SMART ,

    Oh, das würde ich gerne machen, mit Bildern kann ich das, ein Video, ich weiß nicht, wie ich meinen Bildschirm aufnehmen kann.

    Mit der Maus hab ich vorhin ein bisschen probiert.

    Das klappt mal und mal nicht, ab und zu ist beim Programmstart irgendwas nicht so, wie es sein soll, dann stimmt das Klicken nicht mehr :-(.

    Zum Testen habe ich einfach mal die Sprache umgestellt.

    Wenn das mit den UIA klappen würde und ich es kapiren würde, sagt mir mein Bauchgefühl das das Programm zuverläsiger sein word wie das Mausklicken.


    Den richtigen Ablauf würde ich dann in Bildern zusammenfassen, das hilft mir auch selbst zu sehen, was ich eigentlich wann machen muss / sollte.


    Das ist mein aktueller Code dazu:

  • Hallo SOLVE-SMART,

    ich habe alles einmal zusammengetragen und hoffe, dass ich keinen Schritt übersehen habe.

    Meine Testreihe 1 habe ich als CSV angehängt. Dort sind nur die Parameter enthalten, die eingetragen werden sollen. Diese Testreihe muss ich leider 2 bis 3 Mal durchlaufen. :( Dabei ändert sich allerdings zwischen den Testreihen nur die Hardware, nicht die Software. (die .txt ist eigendlich ein .csv Datei)

    Den Ablauf habe ich in einer PDF dokumentiert, die ebenfalls im Anhang ist.

    Die Schritte 1 und 2 müssen nur einmalig ausgeführt werden. Das kann ich auch zu Beginn manuell machen, wenn sichergestellt werden kann, dass das Fenster anschließend korrekt von der Software erkannt wird.

    Die Schritte 3 bis 6 sollten in einer Schleife so lange ausgeführt werden, bis keine Parameter mehr in der CSV-Datei vorhanden sind.

  • Hallo Muecke,

    ich hab mir mal das Programm heruntergeladen und dir die "ersten Schritte" geprogged.
    Auf aufwendiges Errorhandling habe ich für die Übersichtlichkeit des UI-Codes mal verzichtet.
    Sollte aber grundsätzlich immer genutzt werden.

    Wenn deine Software auf englisch gestartet ist (das macht das Script jetzt nicht),
    wird nach Start des Scriptes auf "Settings" und dann auf "Language" geklickt.

    Wenn du an UI_Automation tieferes Interesse hast, kommst du aber nicht umhin, dich da einzuarbeiten.

    Es ist alles absolut objektorientiert. Für jedes neue Objekt wird eine zuweisbare Variable benötigt.

    Dann muss für jedes "Ding" ein eigenes Object erstellt werden.
    Das sollte jeweils auf Fehler überprüft werden.

    Im Anhang hab ich auch noch die UIA_Spy als exe mit angehängt. SO kannst du die nebenbei mitlaufen lassen und proggen. ;)

    Viel Erfolg

    Dateien

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Schnuffel Zuerst einmal ist es mega, was du für mich getan hast. VIELEN DANK.

    Im Moment versuche ich herauszufinden, was in "ROPEX_Demo.au3" gemacht wird.

    Aber ich verstehe es nicht ganz :(

    Mit deinem Code wird das Fenster gefunden und das Menü kann bedient werden.
    Da sich ständig neue Fenster öffnen, muss ich dann das neue Fenster suchen.


    Fenster suchen und merken ist hier:

    Code
    ; Find Main Window
    $oUIAutomation.CreatePropertyCondition( $UIA_NamePropertyId, $ROPEXTitle, $pCondition ) ; Window Title
    $oDesktop.FindFirst($TreeScope_Descendants, $pCondition, $pROPEXe)
    $oROPEXe_Main = ObjCreateInterface($pROPEXe, $sIID_IUIAutomationElement, $dtagIUIAutomationElement)

    Dazu muss ich die $ROPEXTitle und die $oROPEXe_Main neu machen?

    Und das ist dann der Code zum Anklicken:

    Code
    ; Click butten   Menübar = Settings => Language
    $oUIAutomation.CreatePropertyCondition($UIA_ControlTypePropertyId, $UIA_ButtonControlTypeId, $pCondition1)	; Klick Button $UIA_ControlTypePropertyId   $UIA_ButtonControlTypeId
    $oUIAutomation.CreatePropertyCondition($UIA_NamePropertyId, "Language", $pCondition2)                              	; Name des Klick-Buttons als 2. Condition   $UIA_NamePropertyId
    $oUIAutomation.CreateAndCondition($pCondition1, $pCondition2, $pAndCondition)
    $oROPEXe_Main.FindFirst($TreeScope_Descendants, $pAndCondition, $pKlickButton)
    $oKlickButton = ObjCreateInterface($pKlickButton, $sIID_IUIAutomationElement, $dtagIUIAutomationElement)
    $oKlickButton.GetCurrentPattern($UIA_ValuePatternId, $pValue)
    WinActivate($ROPEXTitle)
    UIA_MouseClick($oKlickButton)

    Und hier muss ich die beiden Daten, die du schon in den Kommentaren hast, anpassen:

    Dazu muss ich dann das $oROPEXe_Main mit der neuen Fenstervariablen ersetzen, die ich oben gesucht habe. Und hier WinActivate($ROPEXTitle) kommt dann noch der Titel des Fensters hinzu.


    Wenn ich das bisher richtig verstanden habe, dann muss ich noch ein bisschen experimentieren, bis ich das alles hinbekomme. Aber dann weiß ich, dass ich auf dem richtigen Weg bin.
    Wie macht ihr das, dass ihr den Überblick behaltet, für mich sehen das fast immer alle gleich.

  • So hatte ich es verstanden. Aber leider funktioniert das nicht.


    Habe den Code einfach unten dran gehängt:

  • Schnuffel: Hast Du in der UIASpy.ini -> WindowsMode=Windows 10 Last eingestellt? Kann man über UIASpy.exe -> Options -> Windows -> Mode kontrollieren.

    Dann bekomme ich folgendes:

    Local $oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation8, $sIID_IUIAutomation6, $dtag_IUIAutomation6)

  • erstmal ein großes Lob für die Mühe und den Aufwand, der hinter der Nutzung von uia_functions steckt! diese Methode ist definitiv eine durchdachte und leistungsstarke Möglichkeit, das Programm zu steuern.
    Die Struktur und Möglichkeiten, die damit geboten werden, sind beeindruckend.
    Es hört sich nach viel Arbeit an, er kann wenn er will ja auch beide Methoden vereinen.

    den ich habe zum Beispiel keine Ahnung wie ich die Subfenster größer/kleiner machen kann, oder bzw. verschieben.
    ich weiß nicht wie man das innerhalb des Programms zurechtschieben kann, falls ein Nutzer auf die idee kam die fenster mal zu verschieben.

    Da wäre uia bestimmt sehr nützlich wenn man es versteht ^^ ich habs bisher noch nicht verstanden.

    Die dinge die du innerhalb der Sub- Fenster erreichen willst sind immer fest
    - Eine Möglichkeit die ich mir gedacht habe man belässt die Fenster so wie sie beim ersten start waren, wenn dann ein Fenster befüllt werden soll wird es innerhalb des programmes maximiert und die statischen elemente im subfenster dann per mouseclick angeklickt und per controllbefehen ausgefüllt und bestätigt.

    Wie gesagt leider hänge ich an den Fenstergrößen/Anordnung innerhalb des Programms. Es gibt zwar diesen einen reiter im ribbon menu aber das ist ja nicht zu 100% immer identisch (kommt auf den nutzer drauf an, ich als nutzer musste natürlich an den fenster größen spielen ^^) ich schätze das müsste man auch mit uia lösen wenn man diesen menü punkt nutzen möchte.
    oder diese ribbon udf? keine Ahnung hab ich auch noch nie mit gearbeitet.

    Allerdings sobald sich ein Menüpunkt öffnet, lassen sich die darin enthaltenen Steuerelemente ganz einfach mit ControlClick, ControlSetText oder ähnlichen AutoIt-Befehlen bedienen. Das würde dir etwas Arbeit sparen deshalb der Vorschlag beide Vorschläge zu verwenden und nicht alles bis aufs kleinste zu objektisieren^^.
    Der Vorteil dabei ist, dass alle Fenster und Steuerelemente, die sich öffnen lassen, durch das AutoIt-Info-Tool leicht ausgelesen werden können. Dadurch ist die Steuerung nicht nur unkompliziert, sondern auch sehr direkt. Besonders praktisch ist, dass Eingabefelder, Buttons und andere Elemente so gezielt angesprochen werden können.

    Schnuffel – Danke nochmal für die Aufarbeitung, die in der anderen uia-Methoden steckt – sie ist sicherlich in vielen Szenarien unverzichtbar! Leider für Menschen die damit noch nicht gearbeitet haben schwer zu durchschauen.

    Aber hier habt ihr meine Variante bisher : (die Ordnerstrucktur : @ScriptDir & "\ROPEXvisual 2.0 540000311\RopexVisualLaunch.exe ) mit Debug Zeilen zum schritte kontrollieren. @edit: mache morgen weiter hab grad noch ne Möglichkeit gesehen evtl. geht es.


    Einmal editiert, zuletzt von MojoeB (5. Dezember 2024 um 22:25)

  • BananaJoe

    die Einstellungen der ini habe ich gar nicht berücksichtigt.

    Steht bei mir auf Windows 7. ^^

    PS: ich hab mir die UIA_Spy mal angesehen... In der Auswahl wird mein Win_11 noch gar nicht berücksichtigt und fällt daher auf Windows_7 zurück.
    Ob die IDs wirklich einen Unterschied machen kann ich nicht beurteilen, dazu müsste ich diese bei M$ vergleichen.
    Solange alles trotzdem funktioniert, sehe ich keinen Handlungsbedarf. ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

    Einmal editiert, zuletzt von Schnuffel (6. Dezember 2024 um 16:21)

  • Muecke_1982 mir war nicht bewusst, dass du noch ein "Neuling" in der Automatisierung bist.

    Du hast dir da schon eine Herausforderung gesucht, an der ich als Neuling sicherlich verzweifelt wäre.
    Es sind einfach zu viele Dinge, die vorausgesetzt werden und die man verstehen muss,
    um UI_Automation vernünftig und in vertretbarer Zeit erstellen zu können.

    Zum Einen brauchst du das Grundwerkzeug autoit und zum anderen ein Verständnis von Objekten.
    Diese gehören nicht zum Standardumfang von autoit. Vielleicht hat sich auch deswegen keine große Schar an Leuten dem Thema UI gewidmet.
    Dabei ist das ganze schon über 10 Jahre alt.
    Wenn sich hier nicht jemand findet, der dir das Thema in einem Workshop aufarbeitet, wrden 2 Std. nicht reichen um den Code zu verstehen.

    Nach meinem Verständnis von UI:
    Grundsätzlich ist jedes Fenster in einem Hirarchischen Baum aufgeteilt. Gesehen wird immer nur, was du auch real sehen kannst.
    Dabei sind die Objekte darin aufgehangen. Jedes "Objekt" (TabItem, Button, Input, ...) hat Eigenschaften.
    Bei der hier vorgestellten Methode wird stumpf das sichtbare Fenster nach einem Objekt mit den gegebenen Eigenschaften durchsucht.
    Das Gefunde Objekt wird dann referenziert um es ansprechen zu können. Dann kann das Objekt getriggert werden mit z. B. ändern des Textes, Eingaben, klicken, und und und
    Wenn sich die Ansicht des Fensters und seiner Objekte ändert, muss wohl die gesamte Objekthirarchie des Fensters neu "durchsucht" werden,
    um ein Objekt mit den passenden Eigenschaften zu finden. Dieses wird dann wieder referenziert und kann getriggert werden.

    So würde ich das im groben erklären wollen nach meinem Verständnis.
    Da die Ansteuerung an sich "0" Errorhandling beinhaltet, muss jede Aktion selber abgefangen werden.
    Bequeme Funktionen die einem das abnehmen habe ich bisher nicht gefunden. Ich war schon drauf und dran diese selbst zu schreiben, aber das würde bei mir recht lange dauern. Und da ich mit UI nur gelegentlich zu tun habe, möchte ich mir das nicht antun.

    Bei dem Umfang deiner gewünschten Automatisierung inkl. Test und Errorhandling, ist das schon ein durchaus relevantes Projekt, dass so kostenfrei hier wohl nicht für dich umgesetzt wird. Daher wirst du (bei einer relativ gesicherten Steuerung) um eine eigene Einarbeitung nicht herum kommen.

    Wenn ich dir dabei Fragen beantworten kann, versuche ich das gerne. Aber die komplette Automatisierung schreiben übersteigt ein Hilfeforum deutlich. ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Nun fehlt mir doch schon wieder das "Daumen hoch" Emoji. Stimme dir absolut zu Schnuffel , gut zusammengefasst.

    Diverse wrapper functions zu schreiben, wenn es nur einen Anwendungsfall gibt, wäre mir auch zu anstrengend. Vielleicht reicht ihm am Ende ja doch ein "relativ" robustes Maus-Klicken und fertig 🤔 .

    So wie du es formuliert hast juckt es mich schon eine Umsetzung zu schreiben, doch realistisch habe ich keine Zeit dazu, daher lass ich es lieber bevor andere (wirkliche) Projekte hinten runter fallen.

    -----------------

    Ich drücke dir die Daumen Muecke_1982 🤞 .

    Viele Grüße
    Sven