Das war ja einfach. Vielen Dank
Beiträge von Code4Fun
-
-
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
-
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.
-
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 ErstellungIrgendwie 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
-
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
-
-
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
Alles anzeigenFunc 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 EndFuncIch denke ich muss beim Aufruf von Funktion Zwei 2 Parameter in die Klammern dahinter schreiben, ungefähr so
CodeFunc Zwei($sString1,$sString2) ; in dieser Funktion möchte ich die beiden Werte $sString1 und $sString2 von Funktion Eins weiter verarbeiten EndFuncAber wie bekomme ich die Werte für die beiden Strings aus der Funktion Eins raus, wenn ich diese nicht als globale Variable definiere?
Danke
-
Danke zusammen!
-
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.
-
-
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
Alles anzeigen<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ü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>Ich hoffe es ist nur eine Kleinigkeit.
Vielen Dank
-
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
-
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?
CodeIf $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 EndIfVielen Dank
-
-
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
-
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
-
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.
-
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"
-
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.
-
Mein Script
C
Alles anzeigen#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