Buttons klickbar machen

  • Zunächst einmal recht herzlichen Dank für eure Hilfe. Ich motze nicht, ich finde AutoIT eine absolut geniale Scriptsprache, sonst würde ich es nicht verwenden. Ich hinterfrage nur, weil ich neugierig bin, ich finde das nicht schlimm. Das ist meine Art zu lernen, ich vergleich dabei natürlich immer auch andere Sprachen mit denen ich bisher etwas zu tun hatte um Parallelen zu finden. Nun wird der einie oder ander jetzt verständlicher weise sagen, der Depp soll erst mal die Basics von AutoIt lernen, alla Hello Script und dann soll er weiter sehen. Ich bin aber eher der Typ der von einer konkreten Aufgabenstellung ausgehend, quasi Top Down sich eine Spreache erarbeitet, anders wird es für mich schnell langweilig. Mag sein dass die meisten das anders angehen, bei mir ist das halt so.

    Das Script hatte ich nun schon einige Male gepostet, Es läuft von der GUI jetzt wie es soll. Hatte es nicht erneut gepostet, um mir nicht wieder anhören zu müssen, dass es jetzt sehr groß wäre, und letzlich keiner mehr durch blickt. Aber ich kann es gerne noch mal machen.

    Mein Problem ist hier lediglich noch die Art der Variablendeklaration innerhalnb von Autoit. Der generelle Vorteil von Funktionen sollte ja die Wiederverwertbar keit sein, also aus meiner Sicht. So wäre es sehr schön, in einem Label halt durch Parameterangabe MSSQL, XXZ Dienst, dieses dort angeben zu können, das habe ich leider hier noch nicht hinbekommen. Im Wesentlichen brauch ich für mein Warungsscript auch nicht mehr, das die meisten Aufrufe PS/Batch Aufrufe sind. Diese werde ich zu gegebener Zeit gerne mit rübernehmen, aber im Moment ist das so ok. Also bleibt die Abfrage von Diensten, und die Funktionen hier doppelt reinzunehmen ist ja wohl nicht im Sinne des Erfinders.

    Zum anderen wäre eine Aktualisierung der veränderlichen Labels wünschenswert, aber da habe ich, nach dem was ich in anderen Foren gelesen hatte, wenig Hoffnung.

    HIer noch mal das DraftScript, die Interessierten

    Mein spezieller Dank auch noch mal an Mombas, für die sachliche und themenbezogene Hilfestellung, so was ist tatsächlich selten in IT Foren!

    Ich habe die Stelle markiert, wo meine letzte Frage fürs erste hinzielt. So jetzt könnt Ihr wieder motzen mit mir;)

    @Mombas: Mein Dienst heisst so;)

    Code
    GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local SQL-Server: " & Request_Service(MSSQL), 10, 35, 980, 20)
    MSSQL ist der Dienstname


    lg und schönen Abend noch

    4 Mal editiert, zuletzt von casi4712 (25. Januar 2022 um 18:55)

  • Hi casi4712,

    also Chris, ich habe mir jetzt mal richtig viel Arbeit gemacht und hoffe das hilft dir auch für die Zukunft 🤞 .
    Am Ende meiner gleich folgenden Ausführungen (Punkt 4) habe ich dir ein Beispiel bzgl. deiner Frage zur Aktualisierung eines Labels mit in den Code gepackt 😀 .

    Okay, legen wir los:

    1. Ich habe ein GitHub repository AutoIt-Forums-Help angelegt um an Hand deines Beispiels/Problems hier (immerhin sind wir bereits bei post #42) den Fortschritt deutlich zu machen.
    2. Für dein Thema 87580-buttons-klickbar-machen gibt es dort einen Ordner in denen dein Skript liegt (benannt mit Main.au3) sowie die Abhängigkeiten (die Skripte die ich mir hier zusammengesucht habe bzw. die von den anderen teilweise zu Verfügung gestellt wurden).
    3. In der Historie der Codeänderungen (der Commits) siehst du welche Schritte ich getan habe um dein Skript zu verbessern, etwas Struktur aufzubauen und vorhandene Fehler zu beseitigen.
    4. Wenn du nun auf den Button gfgf klickst (Zeile 169, "$idButton_36") wird der Label-Text Service (Zeile 263, "$iServiceStatusLabel") durch den gefundenen Status der Funktion Request_Service() ersetzt.


    5. Wichtig ist, dass du das Label welches du später noch bearbeiten willst mit einer globalen Variable außerhalb der Funktion _createLabels() vorher deklarierst (Zeile 85).
    6. Was ich alles nicht gemacht habe: Variablenbenennung angepasst, Abstraktion verbessert etc.


    Nun liegt es an dir 😉 .

    - Mein Vorschlag ist es, dass du ab jetzt diesen Code als Ansatzpunkt nimmst und deine folgenden Änderungen/Erweiterungen dort einarbeitest.

    - Dann kann jeder andere der dir hier helfen will die von mir aktualisierten Änderungen nutzen und hat hoffentlich 🤞 den gleichen Stand wie du zu Verfügung.


    Was meinst du Chris? Okay?

    📂 Download => Für die die sich das Repository nicht per "git clone" auschecken, hier der stehts aktuelle Download dazu 😎 .

    Viele Grüße

    Sven

  • also Chris, ich habe mir jetzt mal richtig viel Arbeit gemacht und hoffe das hilft dir auch für die Zukunft

    Ohne dass ich diesen Thread (aus Zeitgründen) im Detail verfolgt habe, dafür schon mal den :thumbup: .

    Ich hinterfrage nur, weil ich neugierig bin, ich finde das nicht schlimm. Das ist meine Art zu lernen ...

    [...]

    Ich bin aber eher der Typ der von einer konkreten Aufgabenstellung ausgehend, quasi Top Down sich eine Sprache erarbeitet, anders wird es für mich schnell langweilig.

    Wie will man denn etwas hinterfragen, ohne über irgendwelches Basiswissen zu verfügen ?

    Es ist zweifelsfrei von Vorteil, sich eine neue Sprache anhand einer Aufgabenstellung anzueignen. Das befreit einen aber nicht davon, sich selbst mit den Grundlagen auseinanderzusetzen.

    Man stürzt sich als Ski-Anfänger ja auch nicht, "quasi Top Down" vom Matterhorn, zumindest darf man nicht erwarten, in einem Stück unten anzukommen ^^ .

    So wie ich das sehe, haben sich BugFix , Moombas , SOLVE-SMART , Velted [et al.] mehr als Mühe gegeben, Dir entsprechende Wege aufzuzeigen.

    Zum anderen wäre eine Aktualisierung der veränderlichen Labels wünschenswert, aber da habe ich, nach dem was ich in anderen Foren gelesen hatte, wenig Hoffnung.

    Welche anderen Foren waren das denn ?

    Hierzu hättest Du z.B. nur den Beitrag #40 (genauer, den Hinweis auf GUICtrlSetData ) lesen müssen.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Du wirst dein Script mit Request_Service(MSSQL) niemals compiliert bekommen haben!

    Warum? Weil er das MSSQL anmeckern wird.

    Warum? Weil er diesen Ausdruck so nicht kennt. Es geht nur so: Request_Service("MSSQL")

    Du übergibst einen String!

    ...

    Aber ab dieser Zeile werfe ich das Handtuch.

    Ich habe den Eindruck, das du dich selber kaum damit beschäftigst was da eigentlich Sache ist und wie etwas funktioniert und was ggf. zu beachten ist.

    Ich helfe wirklich gerne aber wenn am anderen Ende ein unbelehrbarer "Schüler" sitzt, hat es einfach keinen Sinn. (Ich weiß warum ich niemals Lehrer werden würde XD)

  • Ich helfe wirklich gerne aber wenn am anderen Ende ein unbelehrbarer "Schüler" sitzt, hat es einfach keinen Sinn. (Ich weiß warum ich niemals Lehrer werden würde XD)

    Wenn die Leute, die mir damals halfen mein Potential zu erkennen und zu nutzen, auch so gedacht hätten, wäre die heutige Version von mir deutlich dümmer. Mein Glück war, dass die Leute extrem viel Geduld hatten.

  • Hi Bitnugger ,

    es bleibt jedem selbst überlassen wie viel Geduld und Hilfsbereitschaft er aufbringen möchte, auch wenn du von der Geduld deiner angesprochenen Leuten profitiert hast 😀 .
    Schließlich funktioniert das Forum auf rein freiwilliger Basis.

    Lasst uns bitte nicht zu sehr in philosophische bzw. auch erwartungsgetriebene Überlegungen abtrifften (ich ertappe mich gelegentlich selbst dabei 😊).
    Fakt ist doch das man entweder casi4712 weiter hilft und unterstützt oder nicht. Ich für meinen Teil biete mit post #43 dazu nochmal meine Hilfestellung an, wenn auch evtl. die Letzte dazu.

    Viele Grüße

    Sven

  • So hallo noch mal,

    recht herzlichen Dank SOLVE, ich werde mir das gleich noch mal anschauen. Ich weiss trotzdem nich wieso das in diesen Foren immer mit so einer Schärfe ablaufen muss. Ich bin in keinster Weise nicht bereit dazu Ratschläge anzunehmen, Wozu wäre ich dann hier? Ich weiss gar nicht wieso dieser Eindruck entstanden ist. Vielleicht hatte ich einfach nur gedacht AutoIt ist relativ schnell mal nebenbei zu erlenen, dass war aber wohl ein Trugschluss. Dass heisst aber keinesfalls, dass ich AutoIt oder eure Ratschläge nicht wertschätze. Aber wieso sollte ich nicht hinterfagen dürfen, auch wenn ich bzgl, AutoIT noch am Anfang stehe.

    Immerhin hatte ich das Hauptproblem als aboluter AutoIt Depp ja selbst gelöst, es lag an der Position des Hintergrundbildes, was die Buttons inaktiv machte..;)

    Es ist zweifelsfrei von Vorteil, sich eine neue Sprache anhand einer Aufgabenstellung anzueignen. Das befreit einen aber nicht davon, sich selbst mit den Grundlagen auseinanderzusetzen.

    Man stürzt sich als Ski-Anfänger ja auch nicht, "quasi Top Down" vom Matterhorn, zumindest darf man nicht erwarten, in einem Stück unten anzukommen ^^ .

    Ja da hast Du sicher Recht, aber ich halte diesen Vergleich schon ein bischen für sehr weit hergeholt, ich mache hier lediglich ein Startertool für diverse externe Scripte, mir ein paar Systemvariablen-Anzeigen. So was hatte ich in Batch oder PS in ein paar Minuten erledigt, allerdings ohne komfortable GUI;)

    So dann schau ich erst mal

    und noch mal vielen Dank

    schönen Abend noch

    lg

    Einmal editiert, zuletzt von casi4712 (26. Januar 2022 um 18:21)

  • SO ich hab das jetzt ma eben gecheckt. Mit einem Button zur Aktualisierung kann ich durchaus leben, auch wenn eine Aktualisierun in einem bestimmten Intervall sicher cool wäre. Leider scheint es aber nicht zu funktionieren. Wenn ich dich richtig verstanden habe, sollte er ja, sofern ich den Service Status verändere (ausschalten), nach Klick auf "gfgh" unten stoped anzeigen, bei mir bleibt es aber auf Service Running,


    lg

    chris

  • auch wenn eine Aktualisierun in einem bestimmten Intervall sicher cool wäre. Leider scheint es aber nicht zu funktionieren.

    Liest du überhaupt unsere Antworten?!

    4. Entweder ein durch User ausgelöster erneuter Funktionsaufruf (Button) oder

    5. Pollen der Funktion im Hintergrund (AdlibRegister) - auf vernünftiges Intervall achten

  • Hi casi4712 ,

    ausgehend von diesem Code-Stand:

    Spoiler anzeigen

    Und diesen Abhängigkeiten/UDFs hier, funktioniert die Aktualisierung nach Statusänderung wunderbar.

    - Also mit dem Klick auf Button mit Label "gfgf" wird der Status angezeigt.

    - Wenn du einen Dienst stoppst, im Beispiel von TermService (Remote Desktop Services) wie im Code, wird von SERVICE_RUNNING zu SERVICE_STOPPED aktualisiert.

    - Namen der Dienste können abweichen, ich arbeite mit einem englischen Windows.

    Bitte stelle sicher, dass du den selben Code und die selben UDFs verwendest! Wenn das bei dir passt, zeige ich dir wie das mit den Intervall funktioniert 😉 .


    Viele Grüße

    Sven

  • Das stoppen des Dienstes würde im übrigen auch über die Services.au3 funktionieren...

    Schau dir mal die Services.au3 im Editor an, dann findest du auch die entsprechende Funktion.

    Und um den Status "live" zu machen, hat dir BugFix bereits einen Wink gegeben.

  • So Danke noch mal,

    SOLVE-SMART

    irgend wie hatte ich wohl letztes Mal versucht zu antworten, dass Script funktioniert jetzt so wie du es gesagt hast, als per Push. Wie sähe denn nun eine Lösung aus, wo der Zutand automatisch (bei mir dann oben rechts) gepollt wird, Für das an und abschalten habe ich ein externes Script, da hier noch eine ganze Reihe anderer Operationen durchgeführt werden, dass werde ich zu gegebener Zeit noch mit übernehmen. Und liesse sich dass auch auf umkomplizierte Weise machen, hier evtl. noch einen anderen Service abzuchecken, (bspw. Apache2.4) Ich finde den Aufbau im übrigen so jetzt auch besser, die AusgangsGui stammt im Übrigen auch nicht von mir (ziehe mir für diesen Stil also den Schuh auch nicht an;) ). Aber auch nach der Umstellung (Optimierung) wurde jetzt von mir keine Beschleunigung bemerkt, aber da hab ich auch nichts dran auszusetzen gehabt, Autoit scheint da relativ tolerant zu sein.

    und nochmals Dank für die Mühe, was ich auch durch aus sehe, und worauf ich auch immer wieder hinweise, da brauchen sich nicht andere für mich zu bedanken. Mag sein das mein deutsch noch nicht so gut ist und das nicht richtig rüberkommt.

    lg und schönen Tag noch

    Chris

    BTW, ich empfinde diese ganzen Seitenhiebe, ob man mir nun hier helfen sollte oder nicht als reichlich überflüssig, genau so wie die versteckten Angrriffe, ich würde hier irgendwelche Leute ignorieren oder in sonst irgendeiner Form angreifen. Ich lese hier alles aufmerksam durch, auch wenn ich im ersten Moment vielleicht mit einer Sache noch nicht viel anfangen kann. Natürlich ist es freiwillig jedem selbst überlassen Hilfestellung zu geben, aber darauf muss doch nicht extra hingewiesen werden. Ich hoffe wir können im Weiteren ohne auskommen, zumal es auch für andere das Lesen des eigntlichen Kontestes deutlich eschweren dürfte.

    3 Mal editiert, zuletzt von casi4712 (28. Januar 2022 um 13:31)

  • Wie sähe denn nun eine Lösung aus, wo der Zutand automatisch (bei mir dann oben rechts) gepollt wird,

    Liest du überhaupt unsere Antworten?!

    Zitat von BugFix

    4. Entweder ein durch User ausgelöster erneuter Funktionsaufruf (Button) oder

    5. Pollen der Funktion im Hintergrund (AdlibRegister) - auf vernünftiges Intervall achten


    Aber auch nach der Umstellung (Optimierung) wurde jetzt von mir keine Beschleunigung bemerkt, aber da hab ich auch nichts dran auszusetzen gehabt,

    Was sollte sich denn Deiner Meinung nach durch die Umstellung beschleunigen?

  • Hi Casi,

    das pollen hat dir BugFix in Post #40 aufgezeigt: AdlibRegister Velted was schneller^^

    Googled man danach findet sich das hier: https://www.autoitscript.com/autoit3/docs/f…libRegister.htm

    Was dann im Endeffekt als Beispiel folgendes ergibt:

    Ohne Gewähr da nur zusammengeschustert ohne Test.

    2 Mal editiert, zuletzt von Moombas (28. Januar 2022 um 15:07)

  • Hi casi4712 ,

    Moombas hat dir bereits die richtige Antwort und ein gutes Beispiel in seinem letzten post (#55) gegeben.
    Nur der Vollständigkeit halber hier die Code-Variante zu dem von mir angenommenen Code-Stand von dir:

    Spoiler anzeigen


    Und hier siehst du den "Diff" - was tatsächlich geändert wurde zur Variante vorher.

    Viele Grüße

    Sven

  • Hallo erst mal, danke erstmal für die Antworten. Wie ich bereits erwähnte, habe ich hier alles gelesen, auch das Schlagwort AdlibRegister, hielt es eigemtlich für überflüssig das extra zu ewähnen, aber es war hier lediglich für mich ein Schlagwort. Ein dauerndes wiederholen der beiden Schlagworte bringt da auch nicht viel.

    @Mombas;: war ja nun auch schon einiges am Googlen, das hatte ich aber noch nicht gefunden, werde ich mir mal anscheuen. Hatte eher gelesen, dass es wohl nicht gehen solle, was ich mir offen gesagt nicht so ganz vorstellen konnte.

    Danke noch mal und schönes Wochenende noch

    lg

    Chris

  • So, melde mich noch mal eben zurück,

    @ Solve; ich habe die von Dir gemachten Vorschläge eben mal in das bisher bestehende Script eingearbeitet, die Servicenamen habe ich auch eben angepasst. Wahrscheinlich habe ich die Labels nur wieder falsch gemacht.

    AutoIt
       ; GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local SQL-Server: " & _SQL(), 10, 35, 980, 20)
            GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local SQL-Server: " & $SQLLabel, 10, 35, 980, 20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlSetFont(-1, 9, 800) ; bold
    
            ;GUICtrlCreateLabel(" Web-Server                : " & _Webserver(), 643, 50, 980, 20)
       GUICtrlCreateLabel(" Web-Server                : " & $AppacheLabel, 643, 50, 980, 20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlSetFont(-1, 9, 800) ; bold

    Er zeigt jedenfalls immer nur :0 an, egal welchen der beiden Server ich an oder ausschalte, auch nach 5 Minuten steht da nur 0. Wo ist mein Denkfehler ? Hier noch mal das Script, so wie es nun angepasst wurde.

    Ich hoffe bin nicht al zu nervig, in der Hauptache verzweifelt..

    lg

    Chris

  • So, jetzt hast Du die Vorschläge von Moombas und SOLVE-SMART vermixt und verwurstelt. Weshalb hast Du Dich nicht für einen der Vorschläge entschieden?

    Und noch eine allgemeine Frage: Welchen Editor benutzt Du und wie startest beim Testen Du Deine Skripte?

  • Das ist jetzt das angepasste Script von Solve, sind lediglich ein paar Button dazugekommen, ich benutze notepad++, wieso fragst du? Aber wenn das hier zu unübersichtlich wird, werde ich das Script noch mal so weit runterkürzen, dass hier nur der eigentliche Problemcode übrig bleibt, aber dann beschwerden sich wieder Leute, dass sie nicht das "Ganze" sehen. Ich machs immer verkehrt. Basis war hier der in dem ZIP zur Verfügung gestellte Zwischenstand.

    lg

    chris

  • Das ist jetzt das angepasste Script von Solve, ...

    Welches Skript von SOLVE-SMART hast Du 'angepasst'? Das aus seinem letzten Beitrag?

    Zum Editor: Beim zu AutoIt gehörenden SCiTe werden Fehlermeldungen oder Ausgaben mit ConsoleWrite() beim Ausführen eines Skripts mit F5 im unteren Konsolenausgabebereich angezeigt. Ich habe den Eindruck, dass Du die nicht siehst.