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

  • Anwendungen automatisch an bestimmte Monitorposition mit definierter Größe öffnen

    • Code4Fun
    • 27. März 2019 um 16:12

    Also das Telegram Fenster startet, aber zur Eingabe des Kennwort kommt es mit dem Script aktuell nicht.

    Code: Ausgabe vom Output Fenster
    ! Error: 4 Fehler bei WinWaitActive! 
    @@ ScriptLineNumber(232) : <-- Mache einen Doppelklick auf diese Zeile, wenn SciTE zu dieser Zeile springen soll! !
    >16:08:07 AutoIt3.exe ended.rc:4
  • Anwendungen automatisch an bestimmte Monitorposition mit definierter Größe öffnen

    • Code4Fun
    • 27. März 2019 um 14:22

    Hallo zusammen,

    bin mit den ersten 3 Anwendungen schon gut am laufen, aber meine 4. Anwendung macht mir Probleme. Es handel sich um die Desktop Version von Telegram.

    Meine ganzen Koordinaten bestimme ich mit "AutoIt v3 Windows Info".

    Leider arbeitet mein WinMove hier nicht

    Code: Code für Telegram
    $iPID_W_04 = Run("C:\Users\Name\AppData\Roaming\Telegram Desktop\Telegram.exe") ; starte Telegram
    Local $hWnd04 = WinWaitActive("[TITLE:Telegram]", "", 20) ; Wartet maximal 20 Sekunden bis Telegram erscheint.
    If WinActive("[TITLE:Telegram]") Then; wenn das Telegram Fenster aktiv ist
        Send("1234{ENTER}"); schreibe den Login und drücke ENTER
        WinMove($hWnd04, "", -840, 34, 840, 626) ; Verschiebt Telegram auf die X-Position von -840 und Y-Position von 34 und setzt die Höhe auf 840 und Breite auf 626
    EndIf

    Habt Ihr da eine Idee?

  • Anwendungen automatisch an bestimmte Monitorposition mit definierter Größe öffnen

    • Code4Fun
    • 26. März 2019 um 08:56

    Hallo zusammen,

    ich plane für demnächst einen kleinen "Anwendungs Starter" der folgendes können soll.

    Da ich bald mit 5 Monitoren arbeiten werde und aktuell jeden Tag mindestes 16 Anwendungen parallel starten muss und diese aktuell von Hand auf die jeweiligen Monitore verschiebe, möchte ich mir das in Zukunft einfacher machen.

    Der "Anwendungs Starter" soll ..

    • automatisch alle 16 Anwendungen starten (das bekomme ich hin)
    • die jeweilige Anwendung auf einen bestimmten Monitor ziehen
    • dort dann die Anwendung links oben und rechts unten auf eine definierte Größe aufziehen

    Ich denke mit einem MouseClickDrag kann man hier vermutlich was bewegen, jedoch wollte ich fragen, ob es vielleicht einen schickeren Lösungsansatz gibt. Vielleicht irgendwas, dass die Anwendung optisch da gleich richtig erscheint und nicht erst lange wie von Geisterhand durch die Monitore gezogen werden muss.

    Danke für eure Vorschläge.

  • ComboBox dynamisch erweitern und abfragen

    • Code4Fun
    • 26. März 2019 um 08:48

    Hallo Bitnugger,

    erst mal vielen Dank für den Code. Sieht für mich nicht einfach aus. Leider muss ich Dir sagen, dass das komplett am Thema vorbei ging. Ich versuche meine Anwendung mal zu beschreiben. Das was die Anwendung macht, geschieht normal durch ca. 18 Mausklicks in einem Browser. Ich habe das vor Jahren dann so angefangen, das ich einen Wert in eine Inputbox kopiere und dann noch einen Button drücke. Danach musst ich es erweitern um eine Checkbox (für Kunde A). Kurze Zeit Später kam die 2. Checkbox dazu (für Kunde B). Das hat jetzt in Summe 4 Checkboxen. Alle 4 Kunden sind von den Werten her fix definiert, da Sie oft benötigt werden. Ich habe dann noch eine Inputbox hinzugefügt, wo ich sozusagen viel 5. Kunden abbilden kann, indem ich den Wert - nach dem Starten der Anwendung - individuell eintragen kann. Da funktioniert auch alles. Jetzt würde ich gerne die 4 Checkboxen und das Inputfeld verwerfen und dafür eine ComboBox nutzen.

    Die Positionen 2 bis 5 in der Combox (also wenn ich die öffne und man die Werte sieht), sollen meine Kunden A bis D abbilden (also fix sein). Die Position 1 (also der Wert der ComboBox, den man sieht, wenn man die ComboBox nicht aufklappt), soll als InputBox dienen. Sprich ich trage da was ein, dann klicke ich auf meinen Button und eine Aktion XYZ muss dann irgendwie die Position 1 der ComboBox auslesen (oder eben Position 2 bis 5, falls ich einen fixen Wert aus der ComboBox wähle) und verarbeiten.

    Der Variable Wert muss überhaupt nicht fest verdrahtet werden. Der wird wirklich nur zum Zeitpunkt der Ausführung benötigt.

    Trotz allem vielen Dank euch allen für eure Bemühungen.

  • ComboBox dynamisch erweitern und abfragen

    • Code4Fun
    • 25. März 2019 um 11:47

    Hallo BugFix,

    jetzt kommen wir der Sache näher. Danke schon mal. Stell Dir jetzt aber statt dem Text "Neuen Eintrag speichern" den Text "DB abfragen" vor.

    Wenn ich aktuell den Wert ausgeben via

    Code
    While True
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $cAdd
                $sCombo &= "|" & GUICtrlRead($cCombo)
                MsgBox(1,"ComboAusgabe", $sCombo)
    ;~             GUICtrlSetData($cCombo, "|" & $sCombo)
        EndSwitch
    WEnd

    dann sieht das ja untergefähr so aus:

    Code
    Val_1|Val_2|Val_3|Val_4|Mein eigener Wert

    Die DB sollte aber gleich mit "Mein eigener Wert" los legen (oder eben mit Va_1 usw.). Es muss praktisch mit einem Klick der Wert ausgelesen, selektiert und verarbeitet werden.

  • ComboBox dynamisch erweitern und abfragen

    • Code4Fun
    • 25. März 2019 um 11:18

    Hallo zusammen,

    ich suche einen Weg, eine ComboBox mit z.B. 4 festen Werten um einen weiteren 5. Wert zu erweitern.

    Problem:

    • Der Wert wird erst eingetragen, nachdem die Anwendung gestartet ist.
    • Der Wert muss wärend der Ausführung ausgelesen und verarbeitet werden
    • Der Wert muss danach nicht gespeichert werden

    Ich habe als Beispiel mal den Code aus der Hilfe etwas umgeschrieben.

    ComboBox Code
    C
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    
    Example()
    
    Func Example()
        ; Erstellt eine GUI mit verschiedenen Controls.
        Local $hGui = GUICreate("Example", 300, 200)
    
        ; Erstellt ein Combobox-Control.
        Local $idComboBox = GUICtrlCreateCombo("Platzhalter", 10, 10, 185, 20)
        Local $idButton_Close = GUICtrlCreateButton("Schließen", 210, 170, 85, 25)
    
        ; Fügt der Combobox zusätzliche Items hinzu.
        GUICtrlSetData($idComboBox, "Wert 1|Wert 2|Wert 3|Wert 4", "Platzhalter")
    
        ; Zeigt die GUI
        GUISetState(@SW_SHOW, $hGui)
    
        Local $sComboRead = ""
    
        ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $idButton_Close
                    ExitLoop
    
                Case $idComboBox
                    GUISetState(@SW_SHOW, $hGui)
                    $sComboRead = GUICtrlRead($idComboBox)
                    MsgBox($MB_SYSTEMMODAL, "", "Die Combobox zeigt momentan folgendes an: " & $sComboRead, 0, $hGui)
    
            EndSwitch
        WEnd
    
        ; Löscht die vorherige GUI und alle Controls.
        GUIDelete($hGui)
    EndFunc   ;==>Example
    Alles anzeigen

    Wenn ich jetzt zur Laufzeit das Wort "Platzhalter" durch z.B. "Wert 5" ersetze, wird mir aber nie "Wert 5" angezeigt.

    Was muss ich hier genau anpassen?

    Vielen Dank

  • "Dateipfad öffnen" nachbilden

    • Code4Fun
    • 18. Januar 2019 um 13:26

    Hallo alpines, vielen Dank. Das war ja einfach.

  • "Dateipfad öffnen" nachbilden

    • Code4Fun
    • 18. Januar 2019 um 13:07

    Hallo zusammen,

    ich stehe gerade auf dem Schlauch. Unter Windows kann man doch über eine beliebige Datei gehen, Kontextmenü öffnen und dort dann auf "Dateipfad öffnen" klicken. Danach öffnet sich der Explorer in dem Pfad, wo die Datei liegt. Ich möchte gerne einen Button auf meine GUI legen, die genau diese Funktion nachbildet. In der Hilfe komme ich aber nicht wirklich weiter. Dachte es muss was mit Verzeichnis öffnen sein. Könnt Ihr mir hier bitte weiterhelfen. Danke

  • Internetseite auslesen und dann?

    • Code4Fun
    • 28. Dezember 2018 um 11:42

    Hallo Moombas, den theoretischen Ansatz habe ich verstanden. Da ich ich die Variable $sPaket aber ja kurz dafür mit dem "ich klicke auf den Anmeldebutton" Inhalt versehen habe, wird diese ja zum Zeitpunkt von

    Zitat von Moombas

    while $sPaket = "0" ;Entweder auf "0" = Zeichen oder 0 = Zahl prüfen

    einen Inhalt haben, der ungleich "0" ist. Aber versuchen tu ich es mal :)

  • Internetseite auslesen und dann?

    • Code4Fun
    • 28. Dezember 2018 um 09:18

    Erst mal Danke für das Script. Damit werde ich mich aber später beschäftigen. Aktuell habe ich erst 18 verschiedene Zugangsdaten, da war es schneller mit suchen und ersetzen erledigt.

    Ich habe aber noch ein Problem, wo ich nicht so richtig weiss, wie ich das angehen soll. Weiter oben habe ja schon mal beschrieben, das die Website sich bei den unterschiedlichen Anmeldung sehr oft komisch verhält. Aktuell habe ich meine Anmeldedaten in der INI Datei so sortiert, dass der Account, mit den wenigsten Teilnehmern (das sind die Werte, die ich nach erfolgreicher Anmeldung auslese) vorne stehen. Wir haben hier grob eine Spannweite von 200 bis 1400 Teilnehmer.

    Leider scheint es hier keine saubere Logik zu geben. Ich kann ja hier auch nur von Hand mich anmelden und mit der Stoppuhr mal die Loginzeit protokollieren. Da kann es aber durchaus vorkommen, das ein Account mit 350 Teilnehmer eine Loginzeit von 70 Sekunden hat, der Account mit 1300 Teilnehmer aber nur 50 Sekunden.

    Aktuell habe ich ja folgende Timeout Werte gesetzt

    Code
    $hSession = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0')
    ;host
    $sServerName = 'leanv.zks-abfall.de'
    $hConnect = _WinHttpConnect($hSession, $sServerName)
    
    _WinHttpSetTimeouts($hConnect, 10000, 60000, 120000, 120000)

    So richtig ziehen, tun die aber nicht. Das merke ich daher, das mir mein Script irgendwann um die Ohren fliegt, weil der Login noch nicht durch ist, es aber bereits die weiteren Informationen erwartet.

    Wie geht man den bei sowas vernünftig vor?

    Nachtrag:

    Habe jetzt mal die Zeiten für den Login Vorgang gemessen

    Code
    Local $hTimer = TimerInit() ; Beginnt den Timer speichert das Handle in einer Variable.
    ;(3)Benutzername und Passwort senden (POST)
    ConsoleWrite("Benutername in der ZKS_Abfrage ist: " & $sBenutzerName & " mit dem Passwort: " & $sPasswort & @CRLF)
    $sPOST = 'action=login&uname=' & $sBenutzerName & '&password=' & $sPasswort & '&login=login'
    ConsoleWrite("$sPOST ist: " & $sPOST & @CRLF)
    $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
    _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    Local $fDiff = TimerDiff($hTimer) ; Findet den Zeitunterschied zum vorherigen Aufruf von TimerInit. Die Variable wird im TimerInit Handle gespeichert und als Handle an TimerDiff übergeben.
    ConsoleWrite("Zeitunterschied beim Logon: " & $fDiff & " Millisekunden" & @CRLF)

    Die ersten 11 Anmeldung lagen im Schnitt zwischen 2500 und 5500 Millisekunden. Alles gut soweit. Dann kommt ein Ausreiser mit 32000 Millisekunden. Wenn ich mir dann die HTML Datei anschaue, die er geschrieben hat, steht da nur ein "0" drin. Bei den erfolgreichen HTMLs da dann sowas wie Angemeldet: FRITZ&MA815, Letzte Anmeldung: 28.12.2018, 08:51 Uhr

    Was kann ich im obigen Code machen, das er so lange wartet, bis die Anmeldung wirklich vollzogen ist?

  • Internetseite auslesen und dann?

    • Code4Fun
    • 27. Dezember 2018 um 16:34

    Ja, ich denke das hat mich schon ein großes Stück nach vorne gebracht.

    Da ich ja & - Zeichen und # - Zeichen habe, habe ich die mal mit %26 und %23 kaskadiert. Jetzt läuft es schon viel weiter. Aber jetzt kommt die nächste Fehler suche :)

    Vielen Dank Euch allen

  • Internetseite auslesen und dann?

    • Code4Fun
    • 27. Dezember 2018 um 15:56

    Von meinen 18 unterschiedlichen Benutzernamen, haben nur 5 KEIN "&" Zeichen. Wenn ich nur die 5 in die INI Datei nehme, kann ich mich am Stück anmelden. Ich muss irgendwie das "&" Zeichen kaskadieren, sonst sehe ich da irgendwie schwarz.

  • Internetseite auslesen und dann?

    • Code4Fun
    • 27. Dezember 2018 um 15:36

    alpines, ich glaube Deine Info von vorher geht doch in eine richtige Richtung. Problem werden die Benutzernamen sein (die aber vom System vorgegeben werden). Da sind nämlich '&' Zeichen drin ;(

    Code
    $sPOST ist: action=login&uname=FRITZ&MA659&password=GEHEIM&login=login

    Der Benutzernamen wird zwar richtig übergeben, aber für die action ist das ja dann

    Code
    &login=FRITZ
    &MA659
    &password=GEHEIM
    &login=login

    Leider sieht es im HTTP Header Live genauso aus. Glaubst Du, ich kann da mit '' arbeiten?

    Nachtrag: habe gerade beide Varianten versucht, also

    Code
    $sPOST ist: action=login&uname='FRITZ&MA659'&password='GEHEIM'&login=login
    $sPOST ist: action=login&uname="FRITZ&MA659"&password="GEHEIM"&login=login

    Hat beides nichts genützt.

    Ich glaube jetzt habe ich ganz schlechte Karten

  • Internetseite auslesen und dann?

    • Code4Fun
    • 27. Dezember 2018 um 14:12
    Zitat von alpines

    Haben deine Benutzerdaten vielleicht Zeichen die du nicht richtig kodierst? Was passiert denn wenn du die Reihenfolge der Anmeldedaten vertauscht.

    Das einzige Sonderzeichen im Passwort ist eine Raute '#'. Die kommt aber z.B. beim 1. Login vor, beim 2. z.B. nicht. Habe schon früher mal versucht, die Reihenfolge in der INI zu ändern. Keine Änderung.

    Ich habe mal die 14 erzeugten HTML Dateien beigefügt. Datei 1 bis 7 ist der erste Durchlauf, Datei 8 bis 14 ist der 2. Durchlauf. Vielleicht sehr Ihr ja was, was ich nicht sehe.

    Testabfragen.zip

  • Internetseite auslesen und dann?

    • Code4Fun
    • 27. Dezember 2018 um 09:28
    Zitat von alpines

    Hmm eigenartig, du kannst mir gerne das Skript mit Beispielszugangsdaten mal schicken und ich kanns von meiner Seite aus testen, ansonsten sehe ich da nichts.

    Hallo alpines, vielen Dank für das Angebot, aber hier würde ich bzgl. DSGVO ziemlich Probleme bekommen ;)

    Was ich Dir aber anbieten kann, ist mein Mitschnitt vom Firefox Plugin "HTTP Header Live". Hier habe ich dann die Credentials auf neutral geändert

    Mitschnitt von HTTP Header Live
    Code
    https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung
    Host: leanv.zks-abfall.de
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Referer: https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 145
    DNT: 1
    Connection: keep-alive
    Cookie: JSESSIONID=2C1F37D779DAB450F5A0CF7EE6F18757.zksa005pn2; zks_fontsize=77
    Upgrade-Insecure-Requests: 1
    action=login&uname=BENUTZERNAME&password=PASSWORD&callingUri=/LaenderEANV_Web/registrierung?BTN-initRegistration=start&login=login
    POST: HTTP/1.1 200 200
    Date: Thu, 27 Dec 2018 08:10:20 GMT
    Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.46 OpenSSL/1.0.2k-fips
    Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Type: text/html;charset=UTF-8
    Via: 1.1 leanv.zks-abfall.de
    Connection: close
    Transfer-Encoding: chunked
    ---------------------
    https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start
    Host: leanv.zks-abfall.de
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Referer: https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung
    DNT: 1
    Connection: keep-alive
    Cookie: JSESSIONID=2C1F37D779DAB450F5A0CF7EE6F18757.zksa005pn2; zks_fontsize=77
    Upgrade-Insecure-Requests: 1
    
    GET: HTTP/1.1 200 200
    Date: Thu, 27 Dec 2018 08:10:27 GMT
    Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.46 OpenSSL/1.0.2k-fips
    Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Type: text/html;charset=UTF-8
    Via: 1.1 leanv.zks-abfall.de
    Connection: close
    Transfer-Encoding: chunked
    ---------------------
    https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten
    Host: leanv.zks-abfall.de
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Referer: https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 52
    DNT: 1
    Connection: keep-alive
    Cookie: JSESSIONID=2C1F37D779DAB450F5A0CF7EE6F18757.zksa005pn2; zks_fontsize=77
    Upgrade-Insecure-Requests: 1
    BTN-auswahl=Registrierung / 
    Stammdatenpflege
    POST: HTTP/1.1 200 200
    Date: Thu, 27 Dec 2018 08:10:29 GMT
    Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.46 OpenSSL/1.0.2k-fips
    Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Type: text/html;charset=UTF-8
    Via: 1.1 leanv.zks-abfall.de
    Connection: close
    Transfer-Encoding: chunked
    ---------------------
    https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten?action=auswahl
    Host: leanv.zks-abfall.de
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Referer: https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 29
    DNT: 1
    Connection: keep-alive
    Cookie: JSESSIONID=2C1F37D779DAB450F5A0CF7EE6F18757.zksa005pn2; zks_fontsize=77
    Upgrade-Insecure-Requests: 1
    chooseBL=H&ok=Übernehmen
    POST: HTTP/1.1 302 302
    Date: Thu, 27 Dec 2018 08:10:33 GMT
    Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.46 OpenSSL/1.0.2k-fips
    Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Location: /LaenderEANV_Web/stammdaten?BTN-main=Stammdaten
    Content-Length: 0
    Content-Type: text/html;charset=utf-8
    Via: 1.1 leanv.zks-abfall.de
    Connection: close
    ---------------------
    https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten?BTN-main=Stammdaten
    Host: leanv.zks-abfall.de
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Referer: https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten
    DNT: 1
    Connection: keep-alive
    Cookie: JSESSIONID=2C1F37D779DAB450F5A0CF7EE6F18757.zksa005pn2; zks_fontsize=77
    Upgrade-Insecure-Requests: 1
    
    POST: HTTP/1.1 200 200
    Date: Thu, 27 Dec 2018 08:10:33 GMT
    Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.46 OpenSSL/1.0.2k-fips
    Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Type: text/html;charset=UTF-8
    Via: 1.1 leanv.zks-abfall.de
    Connection: close
    Transfer-Encoding: chunked
    ---------------------
    https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=logout
    Host: leanv.zks-abfall.de
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de,en-US;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Referer: https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten?BTN-main=Stammdaten
    DNT: 1
    Connection: keep-alive
    Cookie: JSESSIONID=2C1F37D779DAB450F5A0CF7EE6F18757.zksa005pn2; zks_fontsize=77
    Upgrade-Insecure-Requests: 1
    
    GET: HTTP/1.1 200 200
    Date: Thu, 27 Dec 2018 08:10:39 GMT
    Server: Apache/2.4.6 (Red Hat Enterprise Linux) mod_jk/1.2.46 OpenSSL/1.0.2k-fips
    Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Type: text/html;charset=UTF-8
    Set-Cookie: JSESSIONID=D6BE7E25E8C4F44583D3940FC60327D7.zksa005pn2; Path=/LaenderEANV_Web; HttpOnly
    Via: 1.1 leanv.zks-abfall.de
    Connection: close
    Transfer-Encoding: chunked
    ---------------------
    Alles anzeigen

    Vielleicht muss ich ja noch was mit Cookies machen? Oder beende ich die Sitzung nicht korrekt? Ich finde es halt komisch, das beim unten stehenden ConsoleWrite der Benutzername und das Passwort auch beim 2. Durchgang stimmt, jedoch ich ab 3a feststellen kann, das der Login so nicht funktioniert hat. Ich habe hier eher das Gefühl, das der Logoff Prozess nicht sauber läuft und beim 2. Durchgang noch irgendwas aktiv ist, was den erneuten Login mit neuen Daten verhindert.

    Code
    ;(3)Benutzername und Passwort senden (POST)
    ConsoleWrite("Benutername in der ZKS_Abfrage ist: " & $sBenutzerName & " mit dem Passwort: " & $sPasswort & @CRLF)
    $sPOST = 'action=login&uname=' & $sBenutzerName & '&password=' & $sPasswort & '&login=login'
    ConsoleWrite("$sPOST ist: " & $sPOST & @CRLF)
    $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
    _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
    ; 3a)An dieser Stelle läuft was schief. Die erste Anmeldung geht, beim 2. Durchgang wird die neue Anmeldung - warum auch immer - nicht akzeptiert
    $aTestString = _StringBetween($sPaket, '<div id="zks_loginf">', '</div>') ; schauen, was in der Zwischenablage liegt
    _ArrayDisplay($aTestString, 'Array Inhalt') ; hier will ich überprüfen, ob die Anmeldung erfolgreich war.

    Hier nochmals der Link, wo das ganze Script zu sehen ist:

    https://autoit.de/index.php?thread/86250-internetseite-auslesen-und-dann/&postID=693160#post693160

  • Internetseite auslesen und dann?

    • Code4Fun
    • 22. Dezember 2018 um 12:55

    Hallo alpines,

    erst mal Danke für die Kritik. Ich bitte meinen schlechten Stil zu verzeichen, da ich nur so zum Spass etwas code und das auch nur alle 1,5 Jahre, d.h. Routine werde ich nie bekommen. Aber Du darfst mir gerne sagen, was ich denn besser machen sollte.

    Die For Schleife mit dem Ubound habe ich von Bugfix's Array Tutorial. Da sich der Inhalt der ini ja erweitern kann, liege ich doch mit dem Ubound nicht so falsch. Du hast den Aufbau der ini richtig erkannt. Ich habe mal das Script so umgebaut, dass ich mit deiner ini arbeite und nur die For Schleife laufen lasse und das Ergebnis in die Console schreibe. In meinen Augen passt hier alles, so bekomme ich es ja auch mit meiner ini dargestellt.

    Code
    Func LESE_INI() ; INI Datei im Scriptverzeichnis auslesen, um den Benutzernamen und das Passwort zu ermitteln
    
        Local $aINI, $iZeilenZaehler, $iSpaltenZaehler; Variable für Array deklarieren
        $aINI = IniReadSection(@ScriptDir & "\ZKS-Teilnehmer.ini", "Zugangsdaten") ; Sektion einlesen
        If Not IsArray($aINI) Then ; Wenn zurückgegebene Variable kein Array ist
            MsgBox(0, '', 'INI-Sektion konnte nicht gelesen werden')
            Exit
        EndIf
    
        For $iZeilenZaehler = 1 To UBound($aINI) - 1 ; $iZeilenZaehler ist der Zaehler für die Zeilen
            $sBenutzerName = ($aINI[$iZeilenZaehler][0])
            For $iSpaltenZaehler = 1 To UBound($aINI, 2) - 1 ; $iSpaltenZaehler ist der Zaehler für die Spalten
                $sPasswort = ($aINI[$iZeilenZaehler][$iSpaltenZaehler])
                ConsoleWrite("Benutername ist: " & $sBenutzerName & " mit dem Passwort: " & $sPasswort & @CRLF)
            Next
        Next
    EndFunc   ;==>LESE_INI
    Alles anzeigen

    Hier der Text der Consolenausgabe:

    Benutername ist: user1 mit dem Passwort: pass1

    Benutername ist: user2 mit dem Passwort: pass2

    Benutername ist: user3 mit dem Passwort: pass3

    Benutername ist: user4 mit dem Passwort: pass4

    Von daher verstehe ich nicht, warum ab dem 2. Durchgang es irgendwie nicht mehr passt

  • Internetseite auslesen und dann?

    • Code4Fun
    • 21. Dezember 2018 um 16:49

    So, hier bin ich nochmals. Na ein paar Recherchen bin ich mir ziemlich sicher, das mein Problem wo anderst liegt. Hier mal mein aktuelles Script. Die Benutzernamen und Passwörter stimmen definitiv!

    Aktuelles Script Stand 21.12.2018 - 16:48 Uhr
    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region ; Includes
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <String.au3>
    #include <WinHttp.au3>
    #EndRegion ; Includes
    
    #Region ; Script Kopf
    #cs ----------------------------------------------------------------------------
        AutoIt Version:     3.3.14.5
        Author:             Code4Fun
    
        Script Function:     GUI Script zum Auslesen unserer Postfächer, zur Ermittlung der aktiven Teilnehmer
    
        Erstellungendatum: vom 14.12.2018 bis
    
        Änderungsdatum:
    
        Version: 0.0.1
    
        History:
    
        0.0.1: Initialerstellung
        0.0.2:
    #ce ----------------------------------------------------------------------------
    #EndRegion ; Script Kopf
    
    #Region ; Vorgehensweise
    ; 1. Login auf ZKS in einem Postfach, dann den Quelltext anzeigen lassen
    ; 2. Alles markieren und kopieren, damit sich der Text in der Zwischenablage befindet
    ; 3. Script laufen lassen. Im Scriptverzeichnis wird eine TXT Datei erstellt, welche als Namen die behördliche Nummern enthält.
    ; 4. Liste irgendwie noch nach Excel bringen (spätere Priorität)
    #EndRegion ; Vorgehensweise
    
    #Region ; Globale Variablen Deklaration
    Opt("MustDeclareVars", 1) ; Variablen müssen deklariert sein
    Opt("GUICloseOnESC", 1) ; GUI schließt mit ESC
    Global $guiButton, $guiInput1, $guiInput2, $ReadCombo, $ReadInput, $ZKSFile, $msg, $sFileVersion
    Global $iCount = 1, $sBenutzerName, $sPasswort
    #EndRegion ; Globale Variablen Deklaration
    
    #Region ; Versionnummer
    If @Compiled Then
        $sFileVersion = FileGetVersion(@AutoItExe)
    Else
        $sFileVersion = " !!! Testlauf"
    EndIf
    #EndRegion ; Versionnummer
    
    #Region ; GUI wird gestartet
    GUI()
    #EndRegion ; GUI wird gestartet
    
    #Region ; While Schleife
    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                GUIDelete()
                Exit
            Case $guiButton
                LESE_INI()
        EndSwitch
    WEnd
    #EndRegion ; While Schleife
    
    #Region ; Funktionen
    
    Func GUI() ; GUI erstellen
        GUICreate("ZKS Postfach Teilnehmer Parser " & $sFileVersion, 400, 80)
        $guiButton = GUICtrlCreateButton("Zwischenablage parsen", 110, 20, 200, 40, BitOR($GUI_SS_DEFAULT_BUTTON, $BS_DEFPUSHBUTTON))
        GUISetState(@SW_SHOW)
    EndFunc   ;==>GUI
    
    Func LESE_INI() ; INI Datei im Scriptverzeichnis auslesen, um den Benutzernamen und das Passwort zu ermitteln
    
        Local $aINI, $iZeilenZaehler, $iSpaltenZaehler, $iLCount = 0 ; Variable für Array deklarieren
        $aINI = IniReadSection(@ScriptDir & "\ZKS-Teilnehmer.ini", "Zugangsdaten") ; Sektion einlesen
        If Not IsArray($aINI) Then ; Wenn zurückgegebene Variable kein Array ist
            MsgBox(0, '', 'INI-Sektion konnte nicht gelesen werden')
            Exit
        EndIf
    ;~     _ArrayDisplay($aINI, 'Inhalt INI-Sektion: [Zugangsdaten]') ; eingelesenes Array anzeigen
    
        For $iZeilenZaehler = 1 To UBound($aINI) - 1 ; $iZeilenZaehler ist der Zaehler für die Zeilen
    ;~         ConsoleWrite($aINI[$iZeilenZaehler][0] & " = "); Benutzername
            $sBenutzerName = ($aINI[$iZeilenZaehler][0])
            For $iSpaltenZaehler = 1 To UBound($aINI, 2) - 1 ; $iSpaltenZaehler ist der Zaehler für die Spalten
    ;~             ConsoleWrite($aINI[$iZeilenZaehler][$iSpaltenZaehler] & @CRLF); Passwort
                $sPasswort = ($aINI[$iZeilenZaehler][$iSpaltenZaehler])
    ;~             ConsoleWrite("Benutername ist: " & $sBenutzerName & " mit dem Passwort: " & $sPasswort & @CRLF)
                $iLCount += 1
                ConsoleWrite("Runde " & $iLCount & " hat begonnen => ")
                ZKS_Abfragen()
            Next
        Next
    EndFunc   ;==>LESE_INI
    
    Func ZKS_Abfragen()
        Local $sServerName, $sPaket, $sPOST, $hConnect, $hSession, $aTestString
    
        $hSession = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0')
    
        ;host
        $sServerName = 'leanv.zks-abfall.de'
        $hConnect = _WinHttpConnect($hSession, $sServerName)
    
        _WinHttpSetTimeouts($hConnect, 2000, 45000, 45000, 45000)
    
        ;(1)Aufruf der Seite: https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start (GET)
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/LaenderEANV_Web/registrierung?BTN-initRegistration=start')
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ;(2)rechts oben auf Anmelden klicken (GET)
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/LaenderEANV_Web/registrierung?action=displaylogin', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start')
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ;(3)Benutzername und Passwort senden (POST)
        ConsoleWrite("Benutername in der ZKS_Abfrage ist: " & $sBenutzerName & " mit dem Passwort: " & $sPasswort & @CRLF)
        $sPOST = 'action=login&uname=' & $sBenutzerName & '&password=' & $sPasswort & '&login=login'
        ConsoleWrite("$sPOST ist: " & $sPOST & @CRLF)
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ; 3a)An dieser Stelle läuft was schief. Die erste Anmeldung geht, beim 2. Durchgang wird die neue Anmeldung - warum auch immer - nicht akzeptiert
        $aTestString = _StringBetween($sPaket, '<div id="zks_loginf">', '</div>') ; schauen, was in der Zwischenablage liegt
        _ArrayDisplay($aTestString, 'Array Inhalt') ; hier will ich überprüfen, ob die Anmeldung erfolgreich war.
    
        ;(4)Unter Menü Registrierung/Stammdatenpflege auf Registrierung/Stammdaten klicken (GET)
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', 'LaenderEANV_Web/registrierung?BTN-initRegistration=start', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung')
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ;(5)Auf die große blaue Schaltfläche Registrierung/Stammdatenpflege klicken (POST)
        $sPOST = 'BTN-auswahl=Registrierung / Stammdatenpflege'
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/stammdaten', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start', $sPOST)
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ;(6)Auf den Radio Button Baden-Württemberg klicken
        $sPOST = 'chooseBL=H&ok=Übernehmen'
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', 'LaenderEANV_Web/stammdaten?action=auswahl', 'https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten', $sPOST)
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ClipPut("") ; Zwischenablage zur Vorsicht einmal leeren
        ClipPut($sPaket) ; Zwischenablage mit Quellcode befüllen
    
        ;(7)rechts oben auf Abmelden klicken (GET)
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/LaenderEANV_Web/registrierung?action=logout', 'https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten?BTN-main=Stammdaten')
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        _WinHttpCloseHandle($hConnect) ; die Handles werden beendet
        _WinHttpCloseHandle($hSession) ; die Handles werden beendet
    
        PARSEN_Dokumentenname() ; mit der befüllten Zwischenablage wird an die Funktion PARSEN_Dokumentenname() übergeben.
    EndFunc   ;==>ZKS_Abfragen
    
    Func PARSEN_Dokumentenname() ; hier ermittle ich den Provider Namen und erstelle daraus ein Textdatei mit dessen Namen.
        Local $str, $line1, $line2
    
        $str = ClipGet() ; Zwischenablage abfragen
        $line1 = _StringBetween($str, '<div class="zks_form_wrapper">', '<!-- Buttons -->') ; Erste Vorauswahl
    
        If StringInStr($line1[0], "Provider") Then
            $line2 = _StringBetween($line1[0], '<p class="zks_reg_details_content"><b>', ' / Provider</b>') ; den Postfachnamen rausbekommen falls mit Provider endet
        EndIf
    
        If StringInStr($line1[0], "Sonstiges") Then
            $line2 = _StringBetween($line1[0], '<p class="zks_reg_details_content"><b>', ' / Sonstiges</b>') ; den Postfachnamen rausbekommen falls mit Sonstiges endet
        EndIf
    
        If FileExists(@ScriptDir & "\" & $line2[0] & ".txt") Then ; überprüfen, ob die Datei schon besteht, wenn ja, dann löschen und Variable füllen
            FileDelete(@ScriptDir & "\" & $line2[0] & ".txt")
            Sleep(2000)
            $ZKSFile = @ScriptDir & "\" & $line2[0] & ".txt"
        Else
            $ZKSFile = @ScriptDir & "\" & $line2[0] & ".txt" ; wenn nein, dann nur Variable füllen
        EndIf
    
        FileWrite(@ScriptDir & "\" & $line2[0] & ".txt", "") ; die eigentliche leere Text Datei erstellen
        PARSEN_Inhalt() ; nachdem der Dateiname gefunden und erstellt wurde, geht es um den eigentlichen Inhalt. Weiter mit der Funktion PARSEN_Inhalt()
    EndFunc   ;==>PARSEN_Dokumentenname
    
    Func PARSEN_Inhalt() ; hier ermittle ich die verschiedenen Nummern und Rollen
        Local $str, $line1, $line2, $line3, $sString
    
        $str = ClipGet() ; Zwischenablage erneut abfragen, da Variable local definiert wurde
        $line1 = _StringBetween($str, '<!-- <hr class="zks_separator" />-->', '</table>') ; Erste Vorauswahl
        $line2 = _StringBetween($line1[0], '<!-- Ruler -->', '<!-- Buttons -->') ; Zweite Vorauswahl
    ;~     For $i = 0 To UBound($line2) - 1 Step 3 ; Step 3 dachte ich war gut, aber es hat das Ergebnis verfälscht. Ohne ist alles OK
        For $i = 0 To UBound($line2) - 1 ; Abfrage der einzelnen Blöcke aus $line2
            $line3 = _StringBetween($line2[$i], '<p class="zks_reg_details_content">', @TAB & @TAB & @TAB & '<br />') ; Richtigen String ausfindig machen
    
            ; gefundene Strings durch Abkürzung ersetzen
            Select
    
                Case StringInStr($line3[0], 'Bevollmächtigter des Erzeugers') ; wenn dieser String gefunden wurde
                    $sString = StringReplace($line3[0], 'Bevollmächtigter des Erzeugers', 'BEV') ; ersetze ihn mit diese String | speziell hier gibt es noch Probleme, aber auf später verschoben. Prio 2
    
                Case StringInStr($line3[0], "Erzeuger") ; wenn dieser String gefunden wurde
                    $sString = StringReplace($line3[0], "Erzeuger", "ERZ") ; ersetze ihn mit diese String
    
                Case StringInStr($line3[0], "Beförderer") ; wenn dieser String gefunden wurde
                    $sString = StringReplace($line3[0], "Beförderer", "BEF") ; ersetze ihn mit diese String
    
                Case StringInStr($line3[0], "Entsorger") ; wenn dieser String gefunden wurde
                    $sString = StringReplace($line3[0], "Entsorger", "ENT") ; ersetze ihn mit diese String
    
                Case StringInStr($line3[0], "Makler") ; wenn dieser String gefunden wurde
                    $sString = StringReplace($line3[0], "Makler", "MAK") ; ersetze ihn mit diese String
    
                Case StringInStr($line3[0], "kurzfr.Lag./Umschlag") ; wenn dieser String gefunden wurde
                    $sString = StringReplace($line3[0], "kurzfr.Lag./Umschlag", "ZWL") ; ersetze ihn mit diese String
    
    ;~             Case Else
    ;~                 MsgBox(48, "Keine Ersetzung gefunden", "In der Select Case Anweisung wurde kein String zum Ersetzen gefunden")
    
            EndSelect
    ;~         ConsoleWrite($sString) ; Ausgabe des Ergebnis in unteres Output Fenster - zur Kontrolle
            FileWrite($ZKSFile, $sString) ; Ausgabe in meine Text Datei
        Next
    EndFunc   ;==>PARSEN_Inhalt
    
    Func _FileWrite($sHTML, $Zusatz = "") ; erstellt zu Kontrollzwecken lokale HTML Dateien,
        ConsoleWrite($iCount & "Vote" & $Zusatz & @CRLF)
        FileDelete($iCount & "Vote" & $Zusatz & ".html")
        FileWrite($iCount & "Vote" & $Zusatz & ".html", $sHTML)
        $iCount += 1
    EndFunc   ;==>_FileWrite
    
    #EndRegion ; Funktionen
    Alles anzeigen

    In Zeile 124 überprüfe ich den aktuellen Benutzernamen und das Passwort. Hier ist immer alles OK

    Auch die Consolenausgabe (Zeile 126) vom Inhalt der $aPOST Variable passt noch. Aber ab dem 2. Durchlauf hat das Array (Zeile 132) einen anderen Inhalt.

    Hier der Inhalt vom 1. Durchlauf

    20181221_005.jpg

    und hier das Ergebnis vom 2. Durchlauf

    20181221_006.jpg

    Ich "hoffe" das ich hier vom Verständis alles richtig mache. Ich melde mich ja auch noch von der Seite ab und schließe die Handle. Das sollte doch reichen, oder?

    Freue mich auf eure Antworten.

    Gruß CodeFun

  • Internetseite auslesen und dann?

    • Code4Fun
    • 21. Dezember 2018 um 14:58

    Hallo zusammen,

    ich komme für meinen Geschmack ganz gut voran, habe jetzt aber ein Timing Problem

    Code
        ;(3)Benutzername und Passwort senden (POST)
        $sPOST = 'action=login&uname=' & $sBenutzerName & '&password=' & $sPasswort & '&login=login'
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
        _FileWrite($sPaket)

    Über eine For - Next Schleife werden aus einem Array für den $sPOST unterschiedliche Zugangsdaten erzeugt.

    Jetzt ist es auch im Browser so, das es dort Postfächer mit viel Content und welche mit wenig Content gibt. Die mit wenig Cotent lassen sich schnell anmelden, die mit viel Content können durchaus auch mal 1 Minute dauern, im dümmsten Fall wird eine Proxy Meldung erzeugt (Browser fliegt weg).

    Ich habe jetzt mit der Zeile $sPaket genau dieses Problem. Es gibt dort einen Account, der braucht wirklich sehr lange. Gibt es eine Möglichkeit _WinHttpSimpleSSLRequest einen Timeout mitzugeben? Aktuell scheint er nicht zu warten und es kommt dann die Meldung Anmeldung fehlgeschlagen - Anmeldename oder Passwort falsch. was aber nicht stimmt.

  • Internetseite auslesen und dann?

    • Code4Fun
    • 20. Dezember 2018 um 15:54

    Stimmt! Danke für den Hinweis. Manchmal ist die Leitung doch recht dick, auf der man steht.

  • Internetseite auslesen und dann?

    • Code4Fun
    • 20. Dezember 2018 um 14:07

    Habe einen falschen Gedankenansatzt gehabt. Ab der Stelle, wo die HTML Datei erstellt ist, kann ich ja mit

    Code
    $sSourceCode = FileRead(@ScriptDir & "\6Vote.html")
    ConsoleWrite($sSourceCode)
    MsgBox(64, "Quelltext", $sSourceCode)

    weiter machen

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™