1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Code4Fun

Beiträge von Code4Fun

  • Kann man "GUICtrlSetFont" zentral auf alle Controls setzen?

    • Code4Fun
    • 18. November 2021 um 09:46

    Das war ja einfach. Vielen Dank

  • Kann man "GUICtrlSetFont" zentral auf alle Controls setzen?

    • Code4Fun
    • 18. November 2021 um 09:16

    Hallo zusammen,

    ich baue gerade ein recht kleine GUI, jedoch sollten auf Grund meines nicht mehr so guten Sehens die Schriftgröße etwas größer gemacht werden. Gibt es eine Möglichkeit das für alle Controls pauschal etwas zu vergrößern?

    Gruß C4F

  • Modalfenster (Lightbox) / runde Ecken / Schlagschatten

    • Code4Fun
    • 17. November 2021 um 21:09

    Kann es sein, das ich hier einen Gedankenfehler habe. Ich denke das ich im Main alles abbilden möchte und das Child als Hintergrundabschirmung verwenden will. Kann es sein, das ich aber das Main als Hintergrundabschirmung nehmen muss und das Child mit den ganzen Checkboxen usw. befüllen muss?

    Um etwas Hilfe wäre ich wirklich dankbar.

  • Modalfenster (Lightbox) / runde Ecken / Schlagschatten

    • Code4Fun
    • 17. November 2021 um 13:40

    Da ich noch gar nie was mit Childfenstern gemacht habe, bitte ich hier mal um Hilfe.

    Code
    #Region ; GUI Erstellung
        $hGUI = GUICreate("     Login Tool - Version: " & $sFileVersion, 350, 200, Default, Default, 0x00000080, $WS_EX_TRANSPARENT) ; Das Hauptfenster wird erstellt
        $hGUIChild = GUICreate("", @DesktopWidth - 1, @DesktopHeight - 1, Default, Default, $WS_CHILD, $WS_EX_TRANSPARENT, $hGUI) ; Das dahinter liegende Childfenster wird transparent erstellt
        GUICtrlSetBkColor($hGUIChild, $COLOR_BLACK) ; Die Hintergrundfarbe vom Childfenster soll Schwarz eingefärbt werden
        WinSetOnTop($hGUI, Default, 1) ; Das Hauptfenster in den Vordergrund stellen
        GUISetState(@SW_SHOW, $hGUIChild) ; Das Childfenster neu aufbauen
        GUISetState(@SW_SHOW, $hGUI) ; Das Hauptfenster neu aufbauen
    #EndRegion ; GUI Erstellung

    Irgendwie passiert hier mit dem Child gar nichts. Ich möchte gerne dass das Child hinter dem Hauptfenster liegt, fast den ganzen Bildschirm bedeckt und dabei scharz und leicht transparent ist, damit man die darunter liegenden Fenster / Icons noch leicht sehen - aber nicht bedienen kann.

    Gruß C4F

  • Modalfenster (Lightbox) / runde Ecken / Schlagschatten

    • Code4Fun
    • 17. November 2021 um 08:19

    Guten Morgen,

    ich hatte das letzte mal mit Autoit so vor gefühlt 2 Jahren zu tun, d.h. ich muss mich da erst mal wieder reinarbeiten. Aktuell möchte ich nur ein kleines Windows Anmeldescript erstellen (Laufwerke mappen / Outlook Profile tauschen). Das werde ich vermutlich noch hinbekommen. Was ich aber gerne hätte ist so eine Art Modalfenster wie man es von Browsern kennt, d.h. im Vordergrund die eigentliche "kleine" GUI, welche der Benutzer bedienen soll und im Hintergrund über den gesamten Bildschirm so eine abgedunkelte transparente GUI (ich tippe mal auch irgendwas mit Child ....).

    Hat hier vielleicht jemand ein Grundgerüst, auf dem ich aufbauen kann.

    Meine 2. Frage betrifft die Optik der GUI selbst. Irgendwie finde ich die Standard GUI von Autoit leicht old school. Gibt es da eine einfache Möglichkeit, vielleicht wenigsten die Ecken abgerundet darzustellen, oder eine Art Schlagschatten zu generieren?

    Vielen Dank

    C4F

  • [gelöst ]Lokale Variablen von Funktion A an die Funktion B übergeben

    • Code4Fun
    • 15. April 2021 um 11:41

    Danke Water, funktioniert super!

  • [gelöst ]Lokale Variablen von Funktion A an die Funktion B übergeben

    • Code4Fun
    • 15. April 2021 um 10:40

    Hallo,

    ich habe mal vor langer Zeit gehört, das man in Funktionen mehr mit lokalen als globalen Variablen arbeiten soll. Wie kann ich denn folgendes Problem lösen?

    Code
    Func Eins() 
        Local $sString1, $sString2
        
        For ...
            ; hier passiert was, die beiden Strings bekommen verschiedene Werte in der For Schleife
            Zwei(); an dieser Stelle sollte ich ja die beiden Variablen übergeben können, aber wie?
        Next ...    
    
    EndFunc
    
    Func Zwei()
        ; in dieser Funktion möchte ich die beiden Werte $sString1 und $sString2 von Funktion Eins weiter verarbeiten
    EndFunc
    Alles anzeigen

    Ich denke ich muss beim Aufruf von Funktion Zwei 2 Parameter in die Klammern dahinter schreiben, ungefähr so

    Code
    Func Zwei($sString1,$sString2)
        ; in dieser Funktion möchte ich die beiden Werte $sString1 und $sString2 von Funktion Eins weiter verarbeiten
    EndFunc

    Aber wie bekomme ich die Werte für die beiden Strings aus der Funktion Eins raus, wenn ich diese nicht als globale Variable definiere?

    Danke

  • While ... Wend Frage

    • Code4Fun
    • 6. April 2021 um 15:11

    Danke zusammen!

  • While ... Wend Frage

    • Code4Fun
    • 6. April 2021 um 13:43

    OK, ich hole mal kurz aus, was ich erreichen will.

    Ich habe eine Funktion, die schon sauber läuft. Jetzt möchte ich am Anfang der Funktion eine Überprüfung einbauen. Wenn an einer bestimmten Stelle die Farbe Orange oder Rot zu sehen ist, soll die Funktion so lange eine Wartechleife drehen, bis weder Orange noch Rot an diesen Pixeln zu sehen ist. Wenn die Farben dann nicht mehr da sind, soll die Funktion weiter laufen.

  • While ... Wend Frage

    • Code4Fun
    • 6. April 2021 um 12:20

    Hallo,

    ich brauche heute das erst mal ein While...Wend Konstrukt und wollte fragen, ob das so gehen könnte?

    Code
    While PixelSearch(964, 805, 963, 804, 0xE67600) OR PixelSearch(964, 805, 963, 804, 0xAC1F2D); solange rot oder orange, warte
        sleep(10000); 10 sek
    WEnd

    Danke

  • Wie aktiviere mit WinHttp.au3 eine Checkbox?

    • Code4Fun
    • 18. Februar 2021 um 16:16

    Hallo,

    ich habe ein recht altes Scripts, welches seit langer Zeit jeden Tag seine Dienste tut. Es meldet sich bei einer Internetseite mit unterschiedlichen Accounts an und liest eine Tabelle aus (die sich täglich ändern könnte) und schreibt hier die Daten dann in eine Textdatei. Das ganze läuft sauber über die Windows Aufgabenplanung. Da ich für jeden Tag einen neuen Ordner anlegen lasse (mit dem Datum als Ordnername), fiel mir auf, dass der letzte Ordner vom 16.02.2021 war, also der 17. und 18. Februar nicht da waren.

    Dann habe ich das mal von Hand gestartet und es flog mir um die Ohren. Da ich pro Durchgang 2 HTML Files erzeuge, konnte ich zwar sehen, dass der Loginvorgang sauber lief, der Anbieter aber ein "Achtung wir haben am Sonntag Wartungsarbeiten" Fenster neu dazwischen schaltete, welches man mit einer Checkbox bestätigen muss.

    Jetzt kam ich zwar auf die Idee mit einer IF Abfrage das abzupassen, muss aber echt gestehen (ich habe mich auch schon sehr lange mit Autoit nicht mehr beschäftig), das ich gerade keine Ahnung habe, wie ich mit Autoit eine Checkbox auf einer Webseite virtuell anklicke / setze.

    Hier mal der Sourcecode der Seite:

    Code
    <h2 class="portal_form_2_col_head">Wartung</h2>
    <p>
    
    <table border="1" rules="none" width="100%">
        <tr><td style="background-color:#cbd9e4; padding: 2px 2px 2px 2px">Meldung g&uuml;ltig seit 16.02.2021 (2021-02-16)</td></tr>
        <tr><td style="padding: 2px 2px 2px 2px">Am Sonntag, den 21. Februar 2021 finden von 08:00 Uhr bis ca. 20:00 Uhr dringende Wartungsarbeiten bei dem Portal statt.</b></br></br>In diesem Zeitraum steht Ihnen das Portal nicht zur Verfügung.</br>Wir bitten um Ihr Verständnis.</br></br></td></tr>
        <tr><td style="padding: 2px 2px 0px 2px">Für weiterführende Informationen klicken Sie hier:</td></tr>
        <tr><td style="padding: 0px 2px 2px 2px"><a href="https://www.portal.de/de/aktuelle-stoerungen">Meldungen und Störungen</a></td></tr>
    
    
          <td style="padding: 2px 2px 2px 2px; vertical-align:middle"><input type="checkbox" name="Wartungsarbeiten am Sonntag, den 21 Februar 2021 von 08:00 Uhr bis ca. 20:00 Uhr" value="Wartungsarbeiten am Sonntag, den 21 Februar 2021 von 08:00 Uhr bis ca. 20:00 Uhr"/>Hiermit bestätigen Sie, dass Sie die Meldung zur Kenntnis genommen haben.</td></tr>
    
    </table>
    <p>
    
    <!-- START, Form: Footer --><div class="portal_form_footer">
        <div class="portal_form_anchor"> </div>
    Alles anzeigen

    Ich hoffe es ist nur eine Kleinigkeit.

    Vielen Dank

  • Funktion nach 60 Sekunden Wartezeit starten

    • Code4Fun
    • 20. November 2020 um 13:56

    Hallo zusammen, ich stehe gerade ein klein wenig auf dem Schlauch. Vor längerer Zeit habe ich mir mal ein Script geschrieben mit 4 Schaltflächen. Da ich an 2 unterschiedlichen Arbeitsplätzen mit mehreren Bildschirmen jeden Tag eine gewisse Anzahl an Anwendungen starten muss und ich diese gerne an definierten Stellen mit definierten Größen auf den unterschiedlichen Bildschirmen habe, wollte ich es mir mit diesem Script einfacher machen.

    Schaltfläche 1: Alle meine Anwendungen starten

    Schaltfläche 2: Eine verminderte Anzahl Anwendungen starten

    Schaltfläche 3: Anwendungen sortieren

    Schaltfläche 4: Anwendungen beenden

    Hinter jeder Schaltfläche wird eine Funktion aufgerufen.

    Ich würde jetzt gerne das Script via Autostart aufrufen. Wenn ich jetzt 60 Sekunden nicht von Hand eine der 4 Schaltflächen anklicke, soll das Script von allein die Funktion hinter Schaltfläche 1 aufrufen.

    Wie mache ich dass denn?

    Vielen Dank

  • Standard Drucker Zuweisung

    • Code4Fun
    • 20. November 2020 um 13:51

    Hallo,

    ich brauch mal eure Hilfe. Mit dem unteren Codeschnipsel weiße ich meinem PC, je nachdem ob er sich zu Hause oder in der Firma befindet einen Standard Drucker zu. Das sind jeweils die oberen und unteren _WinAPI_SetDefaultPrinter Zeilen.

    Ich habe jetzt meine Drucker zu Hause, der bisher via USB an einer QNAP NAS gehangen ist umgezogen. Der Drucker hängt jetzt an einer Fritzbox 6490. Die Anbindung ging dort via IP und Port 9100.

    Leider habe ich keinen Plan, wie ich diese Drucker jetzt ansprechen muss (also die mittlere Zeile). Wo kann ich dass denn sauber auslesen unter Windows 10?

    Code
    If $sLocation = "Home" Then ; wenn Du im Homeoffice bist, sind dies die Koordinaten der Anwendung
    _WinAPI_SetDefaultPrinter("\\http://192.168.1.168:631\QNAPPR3") #diese Zeile geht
    _WinAPI_SetDefaultPrinter("\\192.168.1.3:9100\Samsung ML-2010R") #diese Zeile geht noch nicht
    Else ; ansonsten sind dies die Koordinaten der Anwendung
    _WinAPI_SetDefaultPrinter("\\s00-edo\My Printer")#diese Zeile geht in der Firma
    EndIf

    Vielen Dank

  • Bildschirm Auflösung auf Knopfdruck ändern

    • Code4Fun
    • 11. November 2020 um 16:48

    Danke!

  • Bildschirm Auflösung auf Knopfdruck ändern

    • Code4Fun
    • 10. November 2020 um 17:17

    Hallo, bin gerade nur via Smartphone online. Kurze Frage. Kann man die Bildschirm Auflösung an einem Notebook via autoit Befehl „schnell“ auf z.b 800x600 umstellen? Wenn ja, bitte ein Stichwort liefern. Vielen Dank

  • Script loggt plötzlich nicht mehr

    • Code4Fun
    • 20. Oktober 2020 um 08:08

    Ist jetzt sicherlich technisch nicht die schönste Lösung, aber ohne viel Aufwand funktional. Mein Log sieht jetzt so aus, nachdem ich den PC einfach mal um 06:00 Uhr booten lasse

    Spoiler anzeigen

    04:04:26:466 #: 1457

    04:04:26:466 #: START: $hSession

    04:04:26:466 #: START: $hConnect

    04:04:26:528 #: START: While $sPaket

    04:04:26:716 #: ENDE: While $sPaket

    04:04:26:716 #: START: IF $iError

    04:04:26:716 #: ENDE: $hConnect

    04:04:36:466 #: START: _reboot

    04:04:36:466 #: START: _IPChecker

    04:04:36:466 #: START: Lokation UL erkannt

    04:04:36:466 #: 1458

    04:04:36:466 #: START: $hSession

    04:04:36:466 #: START: $hConnect

    06:02:25:063 #: ### START ###

    06:02:35:094 #: START: _reboot

    06:02:35:094 #: START: _IPChecker

    06:02:35:219 #: START: Lokation UL erkannt

    06:02:35:219 #: 1

    06:02:35:219 #: START: $hSession

    06:02:35:235 #: START: $hConnect

    06:02:35:954 #: START: While $sPaket

    06:02:36:251 #: ENDE: While $sPaket

    06:02:36:251 #: START: IF $iError

    06:02:36:297 #: ENDE: $hConnect

    06:02:45:094 #: START: _reboot

    06:02:45:094 #: START: _IPChecker

    06:02:45:094 #: START: Lokation UL erkannt

    06:02:45:094 #: 2

  • Script loggt plötzlich nicht mehr

    • Code4Fun
    • 19. Oktober 2020 um 12:54

    Ich denke ich mach es mir einfacher. Für mich ist das Monitoring mit der Pushbenachrichtigung nur im Zeitraum von 8 bis 17 Uhr wichtig. Ich lass einfach mal den PC Morgens um 06:00 Uhr booten und schau mir das mal an. Falls es wirklich mit dem Backup der Site zu tun haben sollte, tangiert mich das dann nicht mehr. Aber mal vielen Dank für Deine Tipps.

  • Script loggt plötzlich nicht mehr

    • Code4Fun
    • 19. Oktober 2020 um 11:40

    Was mir schon durch den Kopf ging. Eventuell erstellt der Provider um diese Zeit Backups und die Site ist nicht so verfügbar, wie mein Script das erwartet (oder ich es erwarte). Vielleicht muss ich hier noch was einbauen, damit es "wartet"

  • Script loggt plötzlich nicht mehr

    • Code4Fun
    • 19. Oktober 2020 um 11:38

    Hier mal die letzten paar Zeilen aus dem Log (der Zeitstempel ist aber immer unterschiedlich, mal ein paar Minuten mehr, mal weniger)

    Spoiler anzeigen

    04:06:55:230 #: 1471

    04:06:55:230 #: START: $hSession

    04:06:55:230 #: START: $hConnect

    04:06:55:308 #: START: While $sPaket

    04:06:55:480 #: ENDE: While $sPaket

    04:06:55:480 #: START: IF $iError

    04:06:55:480 #: ENDE: $hConnect

    04:07:05:231 #: START: _reboot

    04:07:05:231 #: START: _IPChecker

    04:07:05:231 #: START: Lokation UL erkannt

    04:07:05:231 #: 1472

    04:07:05:231 #: START: $hSession

    04:07:05:231 #: START: $hConnect

    04:07:05:309 #: START: While $sPaket

    04:07:05:512 #: ENDE: While $sPaket

    04:07:05:512 #: START: IF $iError

    04:07:05:512 #: ENDE: $hConnect

    04:07:15:231 #: START: _reboot

    04:07:15:231 #: START: _IPChecker

    04:07:15:231 #: START: Lokation UL erkannt

    04:07:15:231 #: 1473

    04:07:15:231 #: START: $hSession

    04:07:15:231 #: START: $hConnect

    04:07:15:309 #: START: While $sPaket

    04:07:15:496 #: ENDE: While $sPaket

    04:07:15:496 #: START: IF $iError

    04:07:15:496 #: ENDE: $hConnect

    04:07:25:231 #: START: _reboot

    04:07:25:231 #: START: _IPChecker

    04:07:25:231 #: START: Lokation UL erkannt

    04:07:25:231 #: 1474

    04:07:25:231 #: START: $hSession

    04:07:25:231 #: START: $hConnect

    Wie gesagt, die EXE läuft im Taskmanager noch, aber ob Sie noch "lebt" weiß ich nicht. Hier brauche ich mal Hilfe, wie ich das feststellen kann.

  • Script loggt plötzlich nicht mehr

    • Code4Fun
    • 19. Oktober 2020 um 11:13
    Mein Script
    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
        #AutoIt3Wrapper_Icon=pushme.ico
        #AutoIt3Wrapper_Outfile_x64=ServerMonitorin01ushService.exe
        #AutoIt3Wrapper_Compression=4
        #AutoIt3Wrapper_Res_Comment= Servermonitoring Push Service
        #AutoIt3Wrapper_Res_Description= Servermonitoring Push Service
        #AutoIt3Wrapper_Res_Fileversion=0.1.0.58
        #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
        #AutoIt3Wrapper_Res_LegalCopyright=Code4Fun
        #AutoIt3Wrapper_Res_Language=1031
        #AutoIt3Wrapper_AU3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
        #AutoIt3Wrapper_Run_Stop_OnError=y
        #AutoIt3Wrapper_Run_Tidy=y
        #Tidy_Parameters=/gd /reel /ri /sci 9  /kv 0
        #AutoIt3Wrapper_Run_Au3Stripper=y
        #Au3Stripper_Parameters=/so /mo
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <String.au3>
    #include <WinHttp.au3>
    #include <TrayConstants.au3>
    #include <Array.au3>
    #include <Date.au3>
    #include <FileConstants.au3>
    
    ;HotKeySet("{ESC}", "_Exit")
    
    #Region ; Script Kopf
        #cs ----------------------------------------------------------------------------
            AutoIt Version:     3.3.14.5
            Author:             Code4Fun
    
            Script Function:
    
            Diese Script soll sich automatisch auf der Monitoring Website einloggen und im Quelltext nach einem bestimmten Wort suchen.
            Wenn dieses Wort vorhanden ist, löse eine Push Me Aktion aus.
            Es soll so konfigurierbar sein, das über eine ini Datei Holger, Matthias oder Peter angetriggert werden.
    
            Erstellungendatum: vom 10.05.2019
    
            Änderungsdatum:
    
            Version: 0.0.1.0
    
            History:
    
            0.0.1.0 Initialerstellung
        #ce ----------------------------------------------------------------------------
    #EndRegion ; Script Kopf
    
    #Region ; Globale Variablen Deklaration
        ;Opt("MustDeclareVars", 1) ; Variablen müssen deklariert sein
    
        Global $iMsg, $exititem, $sInputFreitext, $idMyedit, $sLesePushMeURL, $sLeseIdentifier, $sLeseTitle, $sLeseImageURL, $hGUI, $sLeseBody, $sLeseURL, $aAlarmString, $aAlarmServer, $aAlarmKlasse
        Global $aCSRF, $sPOST, $sServerName, $sPaket, $hConnect, $hSession, $aIEproxy, $sProxy, $sPaket2, $hConnect2, $sServerName2, $hSession2, $sBenutzerName, $sPasswort, $sLocation, $sLeseTitle4Log
        Global $iCount = 1, $iOrangeCounter = 0, $iRedCounter = 0
        Global $iAlarmCount = 0
        Global $iDurchlaufCounter = 1
        Global $sFileVersion = FileGetVersion(@AutoItExe)
        Global $sStartDatum = @MDAY & "." & @MON & "." & @YEAR
        Global $sStartZeit = @HOUR & ":" & @MIN & ":" & @SEC
    
    #EndRegion ; Globale Variablen Deklaration
    ConsoleWrite($sStartDatum & @CRLF)
    _WriteLog("### START ###")
    AdlibRegister("_Monitoring_Login", 10000)
    
    ;Tray-Menü anpassen
    Opt("TrayAutoPause", 0) ; Script will not be paused when clicking the tray icon.
    Opt("TrayOnEventMode", 1)
    Opt("TrayMenuMode", 1 + 2)
    ;Opt("TrayIconDebug", 1) ; Zeigt die aktuelle Skriptzeile im Trayicon Tipp um das Debugging zu unterstützen
    
    $exititem = TrayCreateItem("Beenden")
    TrayItemSetState(-1, $TRAY_UNCHECKED)
    TrayItemSetOnEvent(-1, "_Exit")
    TraySetState()
    
    #Region ; Hauptschleife
        While 1
            ;Monitoring_Login()
            Sleep(1000)
        WEnd
    #EndRegion ; Hauptschleife
    
    #Region ; Funktionen
    
        Func _Monitoring_Login()
            _WriteLog("START: _reboot")
            _reboot()
            _WriteLog("START: _IPChecker")
            _IPChecker()
            ;ConsoleWrite("Lokation ist: " & $sLocation & @CRLF)
            If $sLocation = "01" Then ; Login für Privat verwendet
                _WriteLog("START: Lokation 01 erkannt")
                $sBenutzerName = "Mein Benutzername"
                $sPasswort = "Mein Passwort"
            Else ; Login für  verwenden
                _WriteLog("START: Lokation 02 erkannt")
                $sBenutzerName = "Benutzername"
                $sPasswort = "Passwort"
            EndIf
            _WriteLog($iDurchlaufCounter)
            ;ConsoleWrite("Durchlauf Nr: " & $iDurchlaufCounter & @CRLF)
    ;~         TraySetToolTip("Version von Servermonitor Push Me: " & $sFileVersion & @CRLF & "Start der Anwendung am: " & $sStartDatum & @CRLF & "um: " & $sStartZeit & " Uhr" & @CRLF & "Durchlauf Nr: " & $iDurchlaufCounter & @CRLF & "Anzahl orangene Alarme seit Start: " & $iOrangeCounter & @CRLF & "Anzahl rote Alarme seit Start: " & $iRedCounter)
            TraySetToolTip("Version: " & $sFileVersion & @CRLF & "Start am: " & $sStartDatum & @CRLF & "um: " & $sStartZeit & " Uhr" & @CRLF & "Round: " & $iDurchlaufCounter & @CRLF & "O-Alarme: " & $iOrangeCounter & @CRLF & "R-Alarme: " & $iRedCounter)
            _WriteLog("START: $hSession")
            $hSession = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0')
            ;host
            $sServerName = 'hier steht die URL drin'
            _WriteLog("START: $hConnect")
            $hConnect = _WinHttpConnect($hSession, $sServerName)
            $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/')
            $aCSRF = _StringBetween($sPaket, 'name="csrf" value="', '" />')
            ;ConsoleWrite("$aCSRF ist: " & $aCSRF[0] & @CRLF)
            $iCount = 1
            _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
            $sPOST = "csrf=" & $aCSRF[0] & "&user_name=" & $sBenutzerName & "&user_password=" & $sPasswort & "&action=login"
            ;ConsoleWrite("$sPOST = " & $sPOST & @CRLF)
            $sPaket = ""
            _WriteLog("START: While $sPaket")
            While $sPaket = "" ;Entweder auf "0" = Zeichen oder 0 = Zahl prüfen
                $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/', 'https://**** die URL ****/', $sPOST)
            WEnd
            _WriteLog("ENDE: While $sPaket")
            _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
            ; suche nach dem Alarmstring
            Local $aAlarmString = _StringBetween($sPaket, '<div class="card text-white ', ' mb-3"') ; hier wird der Status der Server ausgelesen. Möglich ist bg-success / bg-warning und bg-danger
    ;~         _ArrayDisplay($aAlarmString)
            Local $aAlarmServer = _StringBetween($sPaket, 'class="text-white">', '<span class="sr-only">') ; hier wird das Serversystem ausgelesen.
    ;~        _ArrayDisplay($aAlarmServer)
    
            _WriteLog("START: IF $iError")
            If $aAlarmString[0] = "bg-success" Then ; wenn der String bg-success ist, ist alles im grünen Bereich
                ConsoleWrite($aAlarmString[0] & @CRLF)
                $iAlarmCount = 0 ; 0 = alles im grünen Bereich
                TraySetIcon(@ScriptDir & "\green.ico")
                ;_WriteLog(@HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & "  " & "grün")
                ;ConsoleWrite("Alles im grünen Bereich" & @CRLF)
    
            Else
                ;Alarmbereich betreten
                ;ConsoleWrite("Alarmbereich betreten" & @CRLF)
                ;Local $sAlarmString = $aAlarmString[0]
                ;ConsoleWrite("$sAlarmString ist: " & @CRLF & $sAlarmString & @CRLF)
                ;Local $aAlarmKlasse = _StringBetween($sAlarmString, '<div class="', '"') ; hier wird bestimmt, ob es ein orangener oder roter Alarm im Quelltext ist
    
                If $iAlarmCount = 0 Then
                    If $aAlarmString[0] = "bg-warning" Then ; Orangener Alarm festgestellt
                        ;Aktion für Orangenen Alarm auslösen
                        $iOrangeCounter += 1
                        $iAlarmCount = 1 ; 1 = orangener Alarm
                        TraySetIcon(@ScriptDir & "\orange.ico")
                        _WriteLog("System " & $aAlarmServer[0] & ": INSTABIL")
                        ;ConsoleWrite("Orangener Alarm erkannt auf " & $aAlarmServer[0] & @CRLF)
                        ;Push Me mit Orangener Alarm + Servername + Zeit
                        $sLeseTitle = $aAlarmServer[0] & @CRLF & " INSTABIL" & @CRLF
                        $sLeseTitle4Log = $aAlarmServer[0] & ": INSTABIL"
                        $sLeseBody = "System INSTABIL - Details via Login " & @CRLF & "Benutzer 'Benutzer'" & @CRLF & "Kennwort 'Passwort'" & @CRLF & "hier ==>"
                        $sLeseImageURL = "https://**** die URL ****/pushme/OrangenerAlarm.jpg"
                        $sLeseURL = "https://**** die URL ****"
                        MsgBox(65584, "Info vom Servermonitoring", $sLeseTitle & @CRLF & "am: " & @MDAY & "." & @MON & "." & @YEAR & @CRLF & "um: " & @HOUR & ":" & @MIN & ":" & @SEC, 3)
                        _PushMeTo("Holger", $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL)
                        _PushMeTo("Matthias", $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL)
    ;~                     _PushMeTo("Peter", $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL)
                    EndIf
                EndIf
    
                If $iAlarmCount = 0 Or $iAlarmCount = 1 Then
                    If $aAlarmString[0] = "bg-danger" Then ; Roter Alarm festgestellt
                        ;Aktion für Roten Alarm auslösen
                        $iRedCounter += 1
                        $iAlarmCount = 2 ; 2 = roter Alarm
                        TraySetIcon(@ScriptDir & "\red.ico")
                        _WriteLog("System " & $aAlarmServer[0] & ": OFFLINE")
                        ;ConsoleWrite("Roter Alarm erkannt auf " & $aAlarmServer[0] & @CRLF)
                        $sLeseTitle = $aAlarmServer[0] & @CRLF & " OFFLINE" & @CRLF
                        $sLeseTitle4Log = $aAlarmServer[0] & ": OFFLINE"
                        $sLeseBody = "System OFFLINE - Details via Login " & @CRLF & "Benutzer 'Benutzer'" & @CRLF & "Kennwort 'Passwort'" & @CRLF & "hier ==>"
                        $sLeseImageURL = "https://**** die URL ****/pushme/RoterAlarm.jpg"
                        $sLeseURL = "https://**** die URL ****"
                        If $iAlarmCount = 2 Then
                            MsgBox(65552, "Info vom Servermonitoring", $sLeseTitle & @CRLF & "am: " & @MDAY & "." & @MON & "." & @YEAR & @CRLF & "um: " & @HOUR & ":" & @MIN & ":" & @SEC, 3)
                        EndIf
                        _PushMeTo("Holger", $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL)
                        _PushMeTo("Matthias", $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL)
    ;~                     _PushMeTo("Peter", $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL)
                    EndIf
                EndIf
            EndIf
            _WriteLog("ENDE: $hConnect")
            _WinHttpCloseHandle($hConnect)
            ;_WinHttpCloseHandle($hSession)
            $iDurchlaufCounter += 1
        EndFunc   ;==>_Monitoring_Login
    
        Func _PushMeTo($sVorname, $sLeseTitle, $sLeseBody, $sLeseImageURL, $sLeseURL) ; Diese Funktion wird aufgerufen, wenn die Nachricht an Holger gehen soll
            _WriteLog("START: _PushMeTo()")
            _LeseINI($sVorname) ; lese die INI Datei aus
    ;~         $hSession2 = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0')
    ;~         ;host
    ;~         $sServerName2 = 'pushmeapi.jagcesar.se'
    ;~         $hConnect2 = _WinHttpConnect($hSession2, $sServerName2)
    ;~         $sPaket2 = _WinHttpSimpleSSLRequest($hConnect2, 'GET', '?identifier=' & $sLeseIdentifier & '&title=' & _EncodeURL($sLeseTitle) & '&body=' & _EncodeURL($sLeseBody) & '&imageURL=' & _EncodeURL($sLeseImageURL) & '&url=' & _EncodeURL($sLeseURL))
            Local $bData = InetRead($sLesePushMeURL & "identifier=" & $sLeseIdentifier & "&title=" & _EncodeURL($sLeseTitle) & "&body=" & _EncodeURL($sLeseBody) & "&imageURL=" & _EncodeURL($sLeseImageURL) & '&url=' & _EncodeURL($sLeseURL), 1) ; Lese die URL. Durch den Aufruf der URL wird via GET die Nachricht an das iPhone gesendet.
            _WriteLog("Info an " & $sVorname & " : " & $sLeseTitle4Log)
            _WriteAlertLog($sLeseTitle4Log)
            ;_WriteLog(@HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & "  " & "gesendete URL an " & $sVorname & ": " & $sLesePushMeURL & "identifier=" & $sLeseIdentifier & "&title=" & _EncodeURL($sLeseTitle) & "&body=" & _EncodeURL($sLeseBody) & "&imageURL=" & _EncodeURL($sLeseImageURL) & '&url=' & _EncodeURL($sLeseURL))
            Local $sData = BinaryToString($bData)
            If Not $sData = "OK" Then ; Wenn die Website KEIN OK zurück gibt, dann erzeuge Fehlermeldung
                _WriteLog("PushMe an " & $sVorname & ": fehlgeschlagen")
            Else
                _WriteLog("PushMe an " & $sVorname & ": erfolgreich")
            EndIf
            _WriteLog("ENDE: _PushMeTo()")
        EndFunc   ;==>_PushMeTo
    
        Func _FileWrite($sHTML, $Zusatz = "") ; erstellt zu Kontrollzwecken lokale HTML Dateien,
            Local Const $sFilePath = @ScriptDir
            ; Falls das Verzeichnis bereits existiert, beenden.
            If FileExists($sFilePath) Then ; wenn das Verzeichnis existiert, dann.
                ;ConsoleWrite("Das Verzeichnis " & $sFilePath & " existiert bereits" & @CRLF)
            Else
                ; Öffnet das Script Verzeichnis.
                ShellExecute(@ScriptDir)
                ; Erstellt das Verzeichnis.
                DirCreate($sFilePath)
                ; Zeigt eine Nachricht der Erstellung des Verzeichnisses.
                ConsoleWrite("Das Verzeichnis " & $sFilePath & " wurde erstellt" & @CRLF)
                ; Löscht das Verzeichnis. und alle Unterverzeichnis.
                ;DirRemove($sFilePath, $DIR_REMOVE)
                ; Zeigt eine Nachricht mit dem Entfernen des Verzeichnisses.
                ;MsgBox($MB_SYSTEMMODAL, "", "Das Unterverzeichnis: Folder2 wurde gelöscht.")
            EndIf
            ;ConsoleWrite($iCount & ". Voting " & $Zusatz & @CRLF)
            FileDelete($sFilePath & "\" & $iCount & "-MonitoringLogin" & $Zusatz & ".html")
            FileWrite($sFilePath & "\" & $iCount & "-MonitoringLogin" & $Zusatz & ".html", $sHTML)
            $iCount += 1
        EndFunc   ;==>_FileWrite
    
        Func _LeseINI($sSection) ; lese die PushMe.ini aus
            $sLeseIdentifier = IniRead(@ScriptDir & "\pushme.ini", $sSection, "identifier", "")
            $sLesePushMeURL = IniRead(@ScriptDir & "\pushme.ini", $sSection, "PushMeURL", "")
            ;$sLeseTitle = IniRead(@ScriptDir & "\pushme.ini", $sSection, "title", "")
            ;$sLeseBody = IniRead(@ScriptDir & "\pushme.ini", $sSection, "body", "")
            ;$sLeseURL = IniRead(@ScriptDir & "\pushme.ini", $sSection, "url", "")
            ;$sLeseImageURL = IniRead(@ScriptDir & "\pushme.ini", $sSection, "imageURL", "")
        EndFunc   ;==>_LeseINI
    
        Func _DecodeURL($sData) ; Diese Funktion stammt von Prog@ndy und decodiert meinen URL codierten Text wieder in Klartext
            Local $aData = StringSplit(StringReplace($sData, "+", " ", 0, 1), "%")
            $sData = ""
            For $i = 2 To $aData[0]
                $aData[1] &= Chr(Dec(StringLeft($aData[$i], 2))) & StringTrimLeft($aData[$i], 2)
            Next
            Return BinaryToString(StringToBinary($aData[1], 1), 4)
        EndFunc   ;==>_DecodeURL
    
        Func _EncodeURL($sData) ; Diese Funktion stammt von Prog@ndy und codiert meinen Klartext in einen URL codierten Text
            Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
            Local $nChar
            $sData = ""
            For $i = 1 To $aData[0]
                ; ConsoleWrite($aData[$i] & @CRLF)
                $nChar = Asc($aData[$i])
                Switch $nChar
                    Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                        $sData &= $aData[$i]
                    Case 32
                        $sData &= "+"
                    Case Else
                        $sData &= "%" & Hex($nChar, 2)
                EndSwitch
            Next
            Return $sData
        EndFunc   ;==>_EncodeURL
    
        Func _IPChecker() ; hier wird geprüft, ob die IP den String 192.168.192 enthält. Wenn ja, dann bin ich in 01, ansonsten in 02
            If StringInStr(@IPAddress1 & " " & @IPAddress2 & " " & @IPAddress3 & " " & @IPAddress4, "192.168.193") Then ; hier bin ich in 01
                $sLocation = "01" ; setze die Variable $sLocation auf 01
            Else ; und hier in 02
                $sLocation = "02" ; setze die Variable $sLocation auf 02
            EndIf
        EndFunc   ;==>_IPChecker
    
        Func _WriteLog($sLogFileText)
            ;Local $now = _NowCalcDate(); den heutigen Tag ermitteln
            ;If $now = @YEAR & "/" & @MON & "/" & @MDAY Then; Tag vergleichen
            ;EndIf
            ; erstelle Logverzeichnis
            Local Const $sFilePath = @ScriptDir & "\Log"
            If FileExists($sFilePath) Then
                ;mache nichts
            Else
                DirCreate($sFilePath)
            EndIf
            ; erstelle Logdatei
            Local $hFileopen = FileOpen($sFilePath & "\" & @YEAR & "-" & @MON & "-" & @MDAY & ".log", BitOR($FO_APPEND, $FO_UTF8))
            FileWrite($hFileopen, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & "  " & "#: " & $sLogFileText & @CRLF)
            FileClose($hFileopen)
        EndFunc   ;==>_WriteLog
    
        Func _WriteAlertLog($sLogFileText)
            ;Local $now = _NowCalcDate(); den heutigen Tag ermitteln
            ;If $now = @YEAR & "/" & @MON & "/" & @MDAY Then; Tag vergleichen
            ;EndIf
            ; erstelle Logverzeichnis
            Local Const $sFilePath = @ScriptDir & "\Log"
            If FileExists($sFilePath) Then
                ;mache nichts
            Else
                DirCreate($sFilePath)
            EndIf
            ; erstelle Logdatei
            Local $hFileopen = FileOpen($sFilePath & "\" & @YEAR & "-" & @MON & "-" & @MDAY & "-Alert.log", BitOR($FO_APPEND, $FO_UTF8))
            FileWrite($hFileopen, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & "  " & "#: " & $sLogFileText & @CRLF)
            FileClose($hFileopen)
        EndFunc   ;==>_WriteAlertLog
    
        Func _reboot()
            If @HOUR = 23 And @MIN = 59 Then
                _WriteLog("### Es ist 23:59 Uhr - System wird automatisch neu gestartet ###")
                _WriteLog("### ENDE ###")
                Shutdown(22)
            EndIf
        EndFunc   ;==>_reboot
    
        Func _Exit()
            _WriteLog("### ENDE ###")
            Exit
        EndFunc   ;==>_Exit
    
    #EndRegion ; Funktionen
    Alles anzeigen

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™