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

  • Internetseite auslesen und dann?

    • Code4Fun
    • 20. Dezember 2018 um 13:55

    Also die HTML Seite, welche in Zeile 44 erstellt wird , hat die Inhalte. Jetzt muss ich aber dort auf den Quelltext zugreifen. Und das klappt Irgendwie nicht.

  • Internetseite auslesen und dann?

    • Code4Fun
    • 20. Dezember 2018 um 12:56

    So, ich habe jetzt meine ersten Erfahrungen mit WinHttp.au3 gemacht. Da Ihr ja immer gerne Code sehen wollt hier mal mein bisheriger Testcode. Ich habe speziell für dieses Forum einen Benutzeraccount angelegt, sodass ich das gerne life nachspielen könnt. Bis zum Schritt ;(6)Auf den Radio Button Baden-Württemberg klicken komme ich ohne Probleme. Diese Zielseite ist mit anderen Benutzeraccounts etwas "voller".

    An dieser Stelle möchte ich jetzt gerne den Quelltext auslesen, komme da aber mit meinen Versuchen nicht so recht weiter und würde hier mal etwas Unterstützung benötigen. Der Quelltext soll dann in die Zwischenablage kopiert werden. Ab da übernimmt dann ein anderes Script von mir den Rest.

    Testcode
    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <WinHttp.au3>
    
    $hSession = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0')
    
    ;Dieser Teil wird später dynamisch
    $sUserName = 'Code4Fun353' ; dieser Account wurde speziell für das Troubleshooten im Autoit Forum angelegt
    $sPasswort = 'DasIstDas@2018GeheimeZKSPasswort' ; Dieses Passwort ist echt und darf im Autoit Forum für Tests gerne verwendet werden.
    
    ;Variablen
    $iCount = 1
    
    ;host
    $sServerName = 'leanv.zks-abfall.de'
    $hConnect = _WinHttpConnect($hSession, $sServerName)
    
    ;(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)
    
    ;(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)
    
    ;(3)Benutzername und Passwort senden (POST)
    $sPOST = 'action=login&uname=Code4Fun353&password=DasIstDas@2018GeheimeZKSPasswort&login=login'
    $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
    _FileWrite($sPaket)
    
    ;(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)
    
    ;(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)
    
    ;(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)
    
    ;(7)Den Quelltest der geladenen Internetseite auslesen
    
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    
    Func _FileWrite($sHTML, $Zusatz = "")
        ConsoleWrite($iCount & "Vote" & $Zusatz & @CRLF)
        FileDelete($iCount & "Vote" & $Zusatz & ".html")
        FileWrite($iCount & "Vote" & $Zusatz & ".html", $sHTML)
        $iCount += 1
    EndFunc   ;==>_FileWrite
    Alles anzeigen
  • Internetseite auslesen und dann?

    • Code4Fun
    • 20. Dezember 2018 um 08:37

    Guten Morgen,

    ich habe das Problem bei mir gefunden. Beim Au3Check hatte ich auch die Option "Also stop on warnings" aktiv. Nachdem ich diese Option wieder deaktiviert habe, konnte ich das Script laufen lassen. Über eure unterschiedlichen Meinungen bin ich sehr dankbar, jedoch möchte ich als Anfänger etwas technische Unterstützung und werde von daher erstmal

    Code
    Opt("MustDeclareVars", 1) 

    aktiv lassen.

    Falls wir uns hier nicht mehr hören, wünsche ich euch allen frohe Weihnachten.

  • Internetseite auslesen und dann?

    • Code4Fun
    • 19. Dezember 2018 um 16:05

    Hallo zusammen,

    erst mal vielen Dank für eure Hilfe, freut mich riesig. Ich habe in mein Script jetzt den

    Code
    #include <WinHttp.au3> ; UDF für WinHTTP zum Ansteuern von Internetseiten

    eingebaut und schon ein paar Zeilen zum Thema gescriptet.

    Ebenso habe ich aber auch die Zeile

    Code
    Opt("MustDeclareVars", 1) ; Variablen (Dim / Global / Local / Const) müssen deklariert sein. Wichtig für Fehlersuche

    in meinem Script. Wenn ich jetzt via F5 einen Testlauf mache, öffnet sich in SciTE ein neuer Tabulator mit der WinHttp.au3 und bricht dort mit ganz vielen Warnungen ab.

    20181219_003.jpg

    Wie geht man denn bei sowas weiter vor?

    Nachtrag um 16:10 Uhr:

    Habe das auch ohne

    Code
    Opt("MustDeclareVars", 1) ; Variablen (Dim / Global / Local / Const) müssen deklariert sein. Wichtig für Fehlersuche

    versucht. Das Ergebnis bleibt gleich. Die WinHttp.au3 fängt so an

    C
    #include-once
    #include "WinHttpConstants.au3"
  • 1 Projekt - 10 Fragen. Wie geht man vor?

    • Code4Fun
    • 19. Dezember 2018 um 15:57

    Hallo zusammen,

    ich habe heute mal keine technische Frage, sondern eine organisatorische. Wenn ich ein neues Projekt für mich (oder ihr für euch) macht, kann es ja durchaus sein, das man in diesem Projekt Fragen an das Forum hat, welche aber vielleicht unterschiedlicher Natur sind (z.B. Wie baut man eine Schleife oder wie ändere ich die Hintergrundfarbe).

    Wie hättet Ihr (ich spreche hier natürlich die TOP Helfer an) das gerne. Sollen wir alle Fragen zum Projekt in einen Thread schreiben, oder pro Frage einen neuen Thread aufmachen. Ich persönlich würde gerne zur "pro Frage einen Thread" tendieren, da man bei der Suche ja als erstes die Überschrift vom Thread liest und sich dadurch vorstellen kann, um was es in diesem Thread geht.

    Über eurer Antworten freue ich mich schon, da ich glaube, auch andere Anfänger damit beglücken zu können.

    Vielen Dank

  • Internetseite auslesen und dann?

    • Code4Fun
    • 19. Dezember 2018 um 08:48

    Die Startseite ist https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten . Ich werde es mal mit WinHTTP versuchen. Vielen Dank

  • Controls nachträglich auf TAB Seite setzen

    • Code4Fun
    • 17. Dezember 2018 um 19:12

    Ja habe ich, aber nicht erschrecken. Bin noch in einer Findungsphase und weiß auch nicht, ob ich das so umsetzen will und werde. Aber wenn ich schon an so grundsätzlichen Dingen scheitere .....

    Spoiler anzeigen
    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
        #AutoIt3Wrapper_Icon=zks.ico
        #AutoIt3Wrapper_Outfile_x64=ZKS-Teilnehmer-Abfrage_x64.exe
        #AutoIt3Wrapper_Res_Comment=Anwendung zum Abgleich der aktuellen Teilnehmer bei der ZKS
        #AutoIt3Wrapper_Res_Description=Automatisches Abrufen der ZKS Postfächer
        #AutoIt3Wrapper_Res_Fileversion=0.0.1
        #AutoIt3Wrapper_Res_LegalCopyright=Code4Fun
        #AutoIt3Wrapper_Res_Language=1031
        #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
        #AutoIt3Wrapper_AU3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
        #AutoIt3Wrapper_Run_Tidy=y
        #Tidy_Parameters=/gd /reel /ri /sci 9 /gds /kv 0 /sf
        #AutoIt3Wrapper_Run_Au3Stripper=y
        #Au3Stripper_Parameters=/so /mo
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #Region ;Pragma Compile Directives - Könnte mal interessant werden. Hier mal angefügt, damit ich es nicht vergesse
    
    ;~     #pragma compile(Out, bubux64.exe)
    ;~     #pragma compile(x64, true)
    ;~     #pragma compile(Compatibility, win10)
    
    #EndRegion ;Pragma Compile Directives - Könnte mal interessant werden. Hier mal angefügt, damit ich es nicht vergesse
    
    #Region ; Mein Spickzettel ( erstellt aus https://autoit.de/index.php?thread/31948-tutorial-sauber-programmieren/)
    
    ;~ - Includes / Wrapperbefehle
    ;~ - AutoIt-Optionen (AutoItSetOption oder Opt)
    ;~ - Variablendeklaration
    ;~ - Funktionsdeklaration
    ;~ - Hauptschleife
    
    ;~ Für Meine GUI eventuell notwendig
    ;~ Button
    ;~ Icon
    ;~ InputBox
    ;~ Label
    ;~ ListView
    ;~ Menü
    ;~ Pic
    ;~ Scrollbar
    ;~ Statusbar
    ;~ Tab
    ;~ ToolTip
    
    ;~ Mögliche Syntax für Variablendeklaration. Bin mal gespannt, ob ich das einhalten und vor allem richtig einhalten kann ;-)
    ;~ $a<Präfix> - Array, <Präfix> (Optional) bezeichnet den enthaltenen Datentyp
    ;~ $d - Binärdaten
    ;~ $h - Handle
    ;~ $id - Eine AutoIt-ControlID (Rückgabe der GUICtrlCreate-Befehlsreihe)
    ;~ $i - Ganzzahl
    ;~ $b - Bool'scher Wert (True & False)
    ;~ $f - Fließkommazahl
    ;~ $n - Zahl (Egal ob Fließkommazahl oder Ganzzahl)
    ;~ $s - Zeichenkette
    ;~ $v - Variant (Wechselnder oder unbekannter Datentyp)
    ;~ $p - Zeiger
    ;~ $t - Rückgabewert von DllStructCreate
    ;~ $tag - String mit Bildungsvorschrift der DllStruct (Übergabe an DllStructCreate)
    
    ;~ Funktionsaufrufe
    ;~ müssen immer mit einem Unterstrich beginnen, also
    
    ;~ Func _DasIstMeinFunktionsName()
    ;~         ...mach was
    ;~ EndFunc    ;_DasIstMeinFunktionsName
    
    ;~ Bemerkungen;
    ;~ #OnAutoItStartRegister "function" könnte für mich interessant sein. Somit könnte ich gleich beim Starten alle Postfächer durchlaufen und eine Meldung nur anzeigen, bis es fertig ist.
    
    #EndRegion ; Mein Spickzettel ( erstellt aus https://autoit.de/index.php?thread/31948-tutorial-sauber-programmieren/)
    
    #Region ; mögliche Includes einbinden, bzw. nur die notwendigen einbinden.
        ; GUI-Stile für Controls:
        ; URL in normalen Explorer kopieren: mk:@MSITStore:c:\program%20files%20(x86)\autoit3\autoit.chm::/html/appendix/GuiStyles.htm
        #include <AVIConstants.au3> ; für AVI
        #include <ButtonConstants.au3> ; für Button, Group, Radio, Checkbox
        #include <ComboConstants.au3> ; für Combobox
        #include <ColorConstants.au3> ; für Farben
        #include <Constants.au3> ; aus GUI-Referenz - MessageLoop Modus Beispiel, Tray, Run
        #include <DateTimeConstants.au3> ; für Date, MonthCal
        #include <DirConstants.au3> ; für Directory
        #include <EditConstants.au3> ; für Edit, Input
        #include <FileConstants.au3> ; für File
        #include <FontConstants.au3> ; für Font
        #include <GUIConstantsEx.au3> ; für GUI Create, events
        #include <GUITab.au3> ; für GUI Tabulatoren
        #include <InetConstants.au3> ; für Inet
        #include <MsgBoxConstants.au3> ; für MsgBox
        #include <ListboxConstants.au3> ; für List
        #include <ListViewConstants.au3> ; für ListViews
        #include <ProgressConstants.au3> ; für Progress
        #include <RichEditConstants.au3> ; für Edit, Input (Richtext oder so)
        #include <SliderConstants.au3> ; für Slider
        #include <StaticConstants.au3> ; für Label, Pic, Icon
        #include <StringConstants.au3> ; für String
        #include <TabConstants.au3> ; für Tab (falls ich damit arbeite)
        #include <TreeViewConstants.au3> ; für TreeView
        #include <WindowsConstants.au3> ; für GUI erweitere Stile, Windows
    
        ; UDFs: Include-Dateien der Konstanten:
        ; URL in normalen Explorer kopieren: mk:@MSITStore:c:\program%20files%20(x86)\autoit3\autoit.chm::/html/libfunction_constants.htm
    #EndRegion ; mögliche Includes einbinden, bzw. nur die notwendigen einbinden.
    
    #Region ; Script Kopf
        #cs ----------------------------------------------------------------------------
    
            AutoIt Version:     3.3.14.5
            Author:             Code4Fun
    
            Script Function:     GUI Script zum Auslesen unserer ZKS 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 ; AutoIt-Spezifischen Optionen
    
        Opt("GUICloseOnESC", 1) ; Wenn man die ESC Taste drückt, wird die GUI geschlossen, da eine $GUI_EVENT_CLOSE Nachricht gesendet wird
        Opt("MustDeclareVars", 1) ; Variablen (Dim / Global / Local / Const) müssen deklariert sein. Wichtig für Fehlersuche
        ;Opt("TrayIconDebug", 1) ; Zeigt die aktuelle Skriptzeile im Trayicon Tipp um das Debugging zu unterstützen
    
    #EndRegion ; AutoIt-Spezifischen Optionen
    
    #Region ; Globale Variablendeklaration
        Global $iMsg, $hMainGUI, $hSub1GUI, $hSub2GUI ; GUI Variablen
        Global $iWidth01 = 1024, $iWidth02 = 1004, $iWidth03 = 984, $iWidth04 = $iWidth02 - 20 ; Positionsvariablen Weite
        Global $iHeight01 = 768, $iHeight02 = 60, $iHeight03 = 35, $iHeight04 = 670, $iHeight05 = 18, $iHeight06 = $iHeight02 - 30 ; Positionsvariablen Höhe
        Global $iLeft01 = 10, $iLeft02 = 20, $iLeft03 = 25, $iLeft04 = 480, $iLeft05 = 30, $iLeft06 = 150, $iLeft07 = 240, $iLeft08 = 350, $iLeft09 = 440 ; Positionsvariablen Abstand von Links
        Global $iTop01 = 5, $iTop02 = 25, $iTop03 = 75, $iTop04 = 100, $iTop05 = 130, $iTop06 = 140 ; Positionsvariablen Abstand von Oben
    
        Global $sColor_Weiss = '0xFFFFFF' ; Hintergrundfarbe Weiss
        Global $sColor_Gelb = '0x00FFFF' ; Hintergrundfarbe Gelb
        Global $sColor_Gruen = '0x00FF00' ; Hintergrundfarbe Grün
        Global $sColor_Rot = '0x0000FF' ; Hintergrundfarbe Rot
    
        Global $sAnwendungsName = 'ZKS Abfragen'
    
        Global $idGroup01, $idGroup02 ; Gruppierungsvariablen
    
        Global $idLabel01 ; Label Variablen
        Global $idLabelKonto01, $idLabelKonto02, $idLabelKonto03, $idLabelKonto04, $idLabelKonto05, $idLabelKonto06, $idLabelKonto07, $idLabelKonto08, $idLabelKonto09, $idLabelKonto10, $idLabelKonto11, $idLabelKonto12, $idLabelKonto13, $idLabelKonto14, $idLabelKonto15, $idLabelKonto16, $idLabelKonto17, $idLabelKonto18 ; Variablen vom Label KONTO
        Global $idLabelBeschreibung01, $idLabelBeschreibung02, $idLabelBeschreibung03, $idLabelBeschreibung04, $idLabelBeschreibung05, $idLabelBeschreibung06, $idLabelBeschreibung07, $idLabelBeschreibung08, $idLabelBeschreibung09, $idLabelBeschreibung10, $idLabelBeschreibung11, $idLabelBeschreibung12, $idLabelBeschreibung13, $idLabelBeschreibung14, $idLabelBeschreibung15, $idLabelBeschreibung16, $idLabelBeschreibung17, $idLabelBeschreibung18 ; Variablen vom Label BESCHREIBUNG
        Global $idLabelZKSBenutzer01, $idLabelZKSBenutzer02, $idLabelZKSBenutzer03, $idLabelZKSBenutzer04, $idLabelZKSBenutzer05, $idLabelZKSBenutzer06, $idLabelZKSBenutzer07, $idLabelZKSBenutzer08, $idLabelZKSBenutzer09, $idLabelZKSBenutzer10, $idLabelZKSBenutzer11, $idLabelZKSBenutzer12, $idLabelZKSBenutzer13, $idLabelZKSBenutzer14, $idLabelZKSBenutzer15, $idLabelZKSBenutzer16, $idLabelZKSBenutzer17, $idLabelZKSBenutzer18 ; Variablen vom Label ZKSBENUTZER
        Global $idLabelZKSKennwort01, $idLabelZKSKennwort02, $idLabelZKSKennwort03, $idLabelZKSKennwort04, $idLabelZKSKennwort05, $idLabelZKSKennwort06, $idLabelZKSKennwort07, $idLabelZKSKennwort08, $idLabelZKSKennwort09, $idLabelZKSKennwort10, $idLabelZKSKennwort11, $idLabelZKSKennwort12, $idLabelZKSKennwort13, $idLabelZKSKennwort14, $idLabelZKSKennwort15, $idLabelZKSKennwort16, $idLabelZKSKennwort17, $idLabelZKSKennwort18 ; Variablen vom Label ZKSKENNWORT
        Global $idLabelStatus01, $idLabelStatus02, $idLabelStatus03, $idLabelStatus04, $idLabelStatus05, $idLabelStatus06, $idLabelStatus07, $idLabelStatus08, $idLabelStatus09, $idLabelStatus10, $idLabelStatus11, $idLabelStatus12, $idLabelStatus13, $idLabelStatus14, $idLabelStatus15, $idLabelStatus16, $idLabelStatus17, $idLabelStatus18 ;Variablen vom Label STATUS
    
        Global $idTab01, $idTab02, $idTab03, $idTab04 ; Tabulator Variablen
    
        Global $idButton01 ; Button Variablen
        Global $idButtonDetails01, $idButtonDetails02, $idButtonDetails03, $idButtonDetails04, $idButtonDetails05, $idButtonDetails06, $idButtonDetails07, $idButtonDetails08, $idButtonDetails09, $idButtonDetails10, $idButtonDetails11, $idButtonDetails12, $idButtonDetails13, $idButtonDetails14, $idButtonDetails15, $idButtonDetails16, $idButtonDetails17, $idButtonDetails18 ; Variablen vom Button DETAILS
    
    #EndRegion ; Globale Variablendeklaration
    
    #Region ; GUI Erstellung
    
        $hMainGUI = GUICreate($sAnwendungsName, $iWidth01, $iHeight01, -1, -1) ; Hauptfenster
        $idGroup01 = GUICtrlCreateGroup(" Beschreibung ", $iLeft01, $iTop01, $iWidth02, $iHeight02)
        $idLabel01 = GUICtrlCreateLabel("Mit diesem Tool können wir unsere ZKS Teilnehmer abfragen. Mit der Suche können Teilnehmer in dieser Liste oder direkt auf der ZKS gesucht werden", $iLeft03, $iTop02, $iWidth03, $iHeight03)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $idTab01 = GUICtrlCreateTab($iLeft01, $iTop03, $iWidth02, $iHeight04)
    
        $idTab02 = GUICtrlCreateTabItem("Teilnehmer abfragen") ; 1. Tabulator erstellen
        $idButton01 = GUICtrlCreateButton("ZKS anfragen", $iLeft04, $iTop04, Default, Default) ; Abfrage Schaltfläche erstellen
        _WriteLabel01() ; Funktion zur Erstellung der Überschriften
        $idTab03 = GUICtrlCreateTabItem("Teilnehmer suchen") ; 2. Tabulator erstellen
        $idTab04 = GUICtrlCreateTabItem("") ; Beendet die Tab Definition
        GUISetState(@SW_SHOW) ; GUI aktualisieren.
        _GUICtrlTab_SetCurSel($idTab01, 0) ; Tabulator "Teilnehmer abfragen" wieder den Focus geben
        GUISetState(@SW_SHOW, $hMainGUI) ; GUI aktualisieren.
    
    #EndRegion ; GUI Erstellung
    
    #Region ; Hauptschleife
        $iMsg = 0
        While 1
            $iMsg = GUIGetMsg()
            Switch $iMsg
                Case $idButton01
                    _Button01()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
            EndSwitch
        WEnd
        GUIDelete($hMainGUI)
    #EndRegion ; Hauptschleife
    
    #Region ; Funktionen
    
        Func _Button01() ; erstellt alle notwendigen Labels
            ;
        EndFunc   ;==>_Button01
    
        Func _WriteLabel01() ; Überschrift erstellen
            GUISwitch($hMainGUI, $idTab02) ; wieder auf den 1. Tab wechseln (was irgendwie nicht funktioniert)
            $idGroup01 = GUICtrlCreateGroup("", $iLeft02, $iTop05, $iWidth04, $iHeight06) ; Rahmen um die Überschrift legen
            $idLabelKonto01 = GUICtrlCreateLabel("Kontoinhaber / Rolle   |   ", $iLeft05, $iTop06, Default, $iHeight05)
            GUICtrlSetBkColor($idLabelKonto01, $sColor_Weiss)
            $idLabelBeschreibung01 = GUICtrlCreateLabel("Beschreibung   |   ", $iLeft06, $iTop06, Default, $iHeight05)
            GUICtrlSetBkColor($idLabelBeschreibung01, $sColor_Weiss)
            $idLabelZKSBenutzer01 = GUICtrlCreateLabel("ZKS Benutzername   |   ", $iLeft07, $iTop06, Default, $iHeight05)
            GUICtrlSetBkColor($idLabelZKSBenutzer01, $sColor_Weiss)
            $idLabelZKSKennwort01 = GUICtrlCreateLabel("ZKS Kennwort   |   ", $iLeft08, $iTop06, Default, $iHeight05)
            GUICtrlSetBkColor($idLabelZKSKennwort01, $sColor_Weiss)
            $idButtonDetails01 = GUICtrlCreateButton("Details", $iLeft09, $iTop06 - 1, Default, $iHeight05)
            GUICtrlSetBkColor($idButtonDetails01, $sColor_Weiss)
            GUISetState(@SW_SHOW)
        EndFunc   ;==>_WriteLabel01
    #EndRegion ; Funktionen
    Alles anzeigen
  • Controls nachträglich auf TAB Seite setzen

    • Code4Fun
    • 17. Dezember 2018 um 17:00

    OK, das hat jetzt funktioniert, aber irgendwie aktualisiert sich die GUI nicht richtig. Die GUI wird jetzt so erstellt

    Code
    $idTab01 = GUICtrlCreateTab($iLeft01, $iTop03, $iWidth02, $iHeight04)
    $idTab02 = GUICtrlCreateTabItem("Teilnehmer abfragen") ; 1. Tabulator erstellen
    $idButton01 = GUICtrlCreateButton("ZKS anfragen", $iLeft04, $iTop04, Default, Default) ; Abfrage Schaltfläche erstellen
    _WriteLabel01() ; Funktion zur Erstellung der Überschriften
    $idTab03 = GUICtrlCreateTabItem("Teilnehmer suchen") ; 2. Tabulator erstellen
    $idTab04 = GUICtrlCreateTabItem("") ; Beendet die Tab Definition
    _GUICtrlTab_SetCurSel($idTab01, 0) ; Tabulator "Teilnehmer abfragen" wieder den Focus geben
    GUISetState(@SW_SHOW, $hMainGUI) ; GUI aktualisieren.

    Die Funktion _WriteLabel01() startet mit

    Code
    GUISwitch($hMainGUI, $idTab02) ; wieder auf den 1. Tab wechseln (was irgendwie nicht funktioniert)

    Wenn ich mit F5 ausführe, lande ich auch auf dem 1. Tab, aber es ist kein Inhalt zu sehen. Wenn ich dann mit der Maus auf den 2. Tab wechsle und wieder zurück auf den 1. Tab gehe, ist alles da (inklusive meinem Button)

    ???

  • Controls nachträglich auf TAB Seite setzen

    • Code4Fun
    • 17. Dezember 2018 um 16:20

    Hallo Oscar, hallo alpines

    Danke für den Tip. Irgendwie will das bei mir nicht so richtig

    Code
    #Region ; GUI Erstellung
    
        $hMainGUI = GUICreate($sAnwendungsName, $iWidth01, $iHeight01, -1, -1) ; Hauptfenster
        $idTab01 = GUICtrlCreateTab($iLeft01, $iTop03, $iWidth02, $iHeight04)
        $idTab02 = GUICtrlCreateTabItem("Teilnehmer abfragen"); 1. Tabulator erstellen
        $idButton01 = GUICtrlCreateButton("ZKS anfragen", $iLeft04, $iTop04, Default, Default); Abfrage Schaltfläche erstellen
        _WriteLabel01(); Funktion zur Erstellung der Überschriften
        $idTab03 = GUICtrlCreateTabItem("Teilnehmer suchen"); 2. Tabulator erstellen
        $idTab04 = GUICtrlCreateTabItem("") ; Beendet die Tab Definition
        GUISwitch($hMainGUI, $idTab02) ; wieder auf den 1. Tab wechseln (was irgendwie nicht funktioniert)
        GUISetState(@SW_SHOW, $hMainGUI); GUI aktualisieren.
    
    #EndRegion ; GUI Erstellung
    Alles anzeigen

    Es ist immer der Tabulator $idTab03 aktiv.

    Wo denke ich hier falsch

  • Controls nachträglich auf TAB Seite setzen

    • Code4Fun
    • 17. Dezember 2018 um 16:01

    Hallo zusammen,

    Ich erstelle gerade eine klein GUI, welche 2 Tabulatoren hat. Auf dem ersten Tabulator habe ich einen Button gesetzt. Diese ist nur dort sichtbar. Wenn ich den Button betätige, sollen für diesen Tab weitere Labels usw. erstellt werden. Das funktioniert auch, aber leider sehe ich diese Labels auch auf dem 2. Tab. Was mache ich hier falsch? Muss man den 1. Tab irgendwie vorher wieder den Focus geben?

  • Internetseite auslesen und dann?

    • Code4Fun
    • 14. Dezember 2018 um 12:08

    Danke für eure Meinungen. Ich darf euch versichern, es ist im legalen Rahmen.

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 13. Dezember 2018 um 14:28

    Ich habe den Quelltext mal in Notepad++ reinkopiert und dort dann "alle Zeichen anzeigen" aktiviert. Es erscheint zwischen / und Bevoll*** ein oranger Punkt. Wenn ich jedoch irgendwie die Leertaste drücke, wird genau dieser orange Punkt generiert. Was ich halt nicht verstehe, ist der Unterschied zwischen Scriptausführung via F5 und der kompilierten Version. Bei bekommen den gleichen Inhalt der Zwischenablage zur Verfügung gestellt, aber mit der kompilierten Version klappt es nicht.

  • Internetseite auslesen und dann?

    • Code4Fun
    • 13. Dezember 2018 um 14:18

    Hallo,

    ich möchte mich die nächste Zeit wieder mal ein wenig mit autoit beschäftigen. Leider habe ich in den Tutorials noch keine Anleitung gefunden, von daher schreibe ich mein Anliegen hier mal rein, mit der Hoffnung, das mir jemand den einen oder anderen Link zum Nachlesen zur Verfügung stellt.

    Was soll erreicht werden!

    Ich muss mich bei einer Internetseite anmelden (mit unterschiedlichen Accounts), dann sollte ich irgendwie überprüfen können, ob die Site fertig geladen hat (ab und zu scheint - je nach Inhalt - der Browser mit Proxyfehlern weg zu fliegen, vermutlich wegen des Apache Timeout). Wenn als nicht sauber geladen wurde, nochmals versuchen, ansonsten weiter. Danach muss ich dann diverse Schaltflächen drücken. Wie lese ich sowas für Internetseiten aus, bzw. wie kann ich die mit autoit schalten, ohne mit den Koordinaten fahren zu müssen? Wenn ich auf der Zielseite bin, muss ich den Quelltext auslesen und extrahieren. Diesen Teil habe ich schon ein wenig vorbereitet, da ich ja den Teil davor bisher alles von Hand gemacht habe.

    Aktuell befülle ich pro Site eine Textdatei. Das Ziel meiner Kollegen wäre die Befüllung einer Exceltabelle. Mir persönlich wäre aber eine einzig GUI mit Listviews am liebsten. Ich weiß das sind jetzt viele unterschiedliche Dinge. Ich wollte das nur mal alles auf den Tisch legen, damit Ihr wisst, wohin die Reise gehen soll. Am liebsten wäre es mir, wenn man mit der integrierten Lösung von autoit das hinbekommt und nicht auf eine Firefox oder IE Lösung zugreifen muss. So einfach wie möglich.

    Konkret suche ich aktuell erst mal eine Anleitung (vielleicht mit ein paar Fallbeispielen), wie ich die Internetseite aufrufen, den Login finde, dort die Anmeldung automatisieren kann, auf das Laden der Site warte und dann noch weitere Schaltflächen anklicke um zur Ziel Site zu kommen. Gibt es da irgendwo ein gutes Tutorial? Ich habe leider nichts gefunden.

    Vielen Dank euch allen.

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 12. Dezember 2018 um 16:31

    Würdet Ihr das bitte mal kontrollieren, ob ich das so richtig eingefügt habe. Ich bekomme nämlich kein OK, auch nicht, wenn ich es mit dem Erzeuger versuche

    Code
    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
            FileWrite(@ScriptDir & "\error.log", $line3[0])
            If StringSplit($line3[0], '/')[2] = " Bevollmächtigter des Erzeugers" Then ;"OK" in errorfile schreiben
                FileWrite(@ScriptDir & "\error.log", "OK")
            EndIf
            ; gefundene Strings durch Abkürzung ersetzen
            Select
    
                Case StringInStr($line3[0], 'Bevollmächtigter des Erzeugers', '', 1)
                    Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")
    Alles anzeigen
  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 12. Dezember 2018 um 16:00

    Hallo Moombas,

    also

    Code
    Case StringInStr($line3[0], 'Bevollmächtigter des Erzeugers', '', 1)
                    Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")

    hat gar nichts gebracht. Ergebnis ist immer noch gleich (schlecht). Obigen Vorschlag werde ich mal einbauen.

    Was ich aber nicht verstehe

    1.) warum soll ich '/' als Trennzeichen verwenden (sind doch Leerzeichen)

    2.) ist das Leerzeichen vor Bevollmächtigter bewußt eingesetzt, damit ich theoretisch 3 Leerzeichen vorfinde?

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 12. Dezember 2018 um 15:03

    OK, ich habe jetzt das Script etwas umgebaut

    Neues Script
    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
        #AutoIt3Wrapper_Icon=zks.ico
        #AutoIt3Wrapper_Res_Comment=Parse die ZKS Seite (Quelltext) nach behördlichen Nummern und Rollen
        #AutoIt3Wrapper_Res_Description=ZKS Teilnehmernummern und -rollen Parser
        #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
        #AutoIt3Wrapper_Res_SaveSource=y
        #AutoIt3Wrapper_Res_Language=1031
        #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
        #AutoIt3Wrapper_Run_Stop_OnError=y
        #AutoIt3Wrapper_Run_Tidy=y
        #AutoIt3Wrapper_Run_Au3Stripper=y
        #Au3Stripper_Parameters=/mo /SCI=1
        #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
        ; 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)
        
        #include <string.au3>
        #include <GUIConstantsEx.au3>
        #include <WindowsConstants.au3>
        #include <MsgBoxConstants.au3>
        #include <Array.au3>
        
        Opt("MustDeclareVars", 1)
        
        Global $guiButton, $guiInput1, $guiInput2, $ReadCombo, $ReadInput, $ZKSFile, $msg
        
        GUI()
        
        While 1
            $msg = GUIGetMsg()
            Switch $msg
                Case $GUI_EVENT_CLOSE
                    GUIDelete()
                    Exit
                Case $guiButton
                    $ReadInput = GUICtrlRead($guiInput1)
                    $ReadCombo = GUICtrlRead($guiInput2)
                    PARSEN_Dokumentenname()
                    PARSEN_Inhalt()
            EndSwitch
        WEnd
        
        Func GUI() ; GUI erstellen
            Local $gui = GUICreate("ZKS Postfach Teilnehmer Parser", 350, 80)
            $guiButton = GUICtrlCreateButton("Zwischenablage parsen", 80, 20, 200, 40)
            GUISetState(@SW_SHOW)
        EndFunc   ;==>GUI
        
        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")
                $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
        EndFunc   ;==>PARSEN_Dokumentenname
        
        
        Func PARSEN_Inhalt() ; hier ermittle ich die verschiedenen Nummern und Rollen
            Local $str, $line1, $line2, $line3
        
            $str = ClipGet() ; Zwischenablage abfragen
            $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
                FileWrite(@ScriptDir & "\error.log", $line3[0])
                ; gefundene Strings durch Abkürzung ersetzen
                Select
        
                    Case StringInStr($line3[0], "Bevollmächtigter des Erzeugers")
                        Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")
        
                    Case StringInStr($line3[0], "Erzeuger")
                        Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ")
        
                    Case StringInStr($line3[0], "Beförderer")
                        Local $sString = StringReplace($line3[0], "Beförderer", "BEF")
        
                    Case StringInStr($line3[0], "Entsorger")
                        Local $sString = StringReplace($line3[0], "Entsorger", "ENT")
        
                    Case StringInStr($line3[0], "Makler")
                        Local $sString = StringReplace($line3[0], "Makler", "MAK")
        
                    Case StringInStr($line3[0], "kurzfr.Lag./Umschlag")
                        Local $sString = StringReplace($line3[0], "kurzfr.Lag./Umschlag", "ZWL")
        
        ;~             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
            MsgBox(64, "Fertig", "Die Zwischenablage wurde geparst", 1) ; Rückmeldung, das es fertig ist.
        EndFunc   ;==>PARSEN_Inhalt
    Alles anzeigen

    Hier die ersten 40 Zeilen meiner error.log wo ich die Variable $line3[0] reinschreibe

    40 Zeilen aus error.log

    A550014075 / Erzeuger

    A590007106 / Erzeuger

    A59S008096 / Entsorger

    A59T000805 / Beförderer

    B94103F005 / Erzeuger

    BERZ002145 / Erzeuger

    C000236909 / Beförderer

    C000417101 / Beförderer

    C000483073 / Beförderer

    C1E0000006 / Entsorger

    C1Q0000002 / Entsorger

    C4J8000009 / kurzfr.Lag./Umschlag

    CBEV001451 / Bevollmächtigter des Erzeugers

    CBEV001488 / Bevollmächtigter des Erzeugers

    CBM9410003 / Erzeuger

    CE00025793 / Erzeuger

    CE00026806 / Erzeuger

    CE00027044 / Erzeuger

    CE00027687 / Erzeuger

    CE00027737 / Erzeuger

    CS00002250 / Erzeuger

    CUX0001507 / Erzeuger

    E113T01176 / Beförderer

    E124808334 / Beförderer

    E151800206 / Beförderer

    E151M00542 / Makler

    E154021174 / Erzeuger

    E313E00015 / Erzeuger

    E366212040 / Erzeuger

    E374613806 / Erzeuger

    E515238071 / Erzeuger

    E515571808 / Entsorger

    E554205622 / Erzeuger

    E558056115 / Erzeuger

    E566B00014 / Bevollmächtigter des Erzeugers

    E711241957 / Erzeuger

    E711722708 / Entsorger

    E754A50063 / Entsorger

    E758040898 / Erzeuger

    F02E915901 / Erzeuger

    hier dann das Ergebnis aus der Textdatei, welche aus der komplilierten x64 EXE stammt

    hier die 40 Zeilen aus der "kompilierten" Textdatei

    A550014075 / ERZ

    A590007106 / ERZ

    A59S008096 / ENT

    A59S008096 / ENT

    B94103F005 / ERZ

    BERZ002145 / ERZ

    BERZ002145 / ERZ

    BERZ002145 / ERZ

    BERZ002145 / ERZ

    C1E0000006 / ENT

    C1Q0000002 / ENT

    C4J8000009 / ZWL

    CBEV001451 / Bevollmächtigter des ERZs

    CBEV001488 / Bevollmächtigter des ERZs

    CBM9410003 / ERZ

    CE00025793 / ERZ

    CE00026806 / ERZ

    CE00027044 / ERZ

    CE00027687 / ERZ

    CE00027737 / ERZ

    CS00002250 / ERZ

    CUX0001507 / ERZ

    CUX0001507 / ERZ

    CUX0001507 / ERZ

    CUX0001507 / ERZ

    E151M00542 / MAK

    E154021174 / ERZ

    E313E00015 / ERZ

    E366212040 / ERZ

    E374613806 / ERZ

    E515238071 / ERZ

    E515571808 / ENT

    E554205622 / ERZ

    E558056115 / ERZ

    E566B00014 / Bevollmächtigter des ERZs

    E711241957 / ERZ

    E711722708 / ENT

    E754A50063 / ENT

    E758040898 / ERZ

    F02E915901 / ERZ

    und zum Schluss noch das Ergebnis, wenn ich das Script via F5 laufen lasse

    40 Zeilen Text, wenn via F5 die Datei generiert wurde

    A550014075 / ERZ

    A590007106 / ERZ

    A59S008096 / ENT

    A59T000805 / BEF

    B94103F005 / ERZ

    BERZ002145 / ERZ

    C000236909 / BEF

    C000417101 / BEF

    C000483073 / BEF

    C1E0000006 / ENT

    C1Q0000002 / ENT

    C4J8000009 / ZWL

    CBEV001451 / BEV

    CBEV001488 / BEV

    CBM9410003 / ERZ

    CE00025793 / ERZ

    CE00026806 / ERZ

    CE00027044 / ERZ

    CE00027687 / ERZ

    CE00027737 / ERZ

    CS00002250 / ERZ

    CUX0001507 / ERZ

    E113T01176 / BEF

    E124808334 / BEF

    E151800206 / BEF

    E151M00542 / MAK

    E154021174 / ERZ

    E313E00015 / ERZ

    E366212040 / ERZ

    E374613806 / ERZ

    E515238071 / ERZ

    E515571808 / ENT

    E554205622 / ERZ

    E558056115 / ERZ

    E566B00014 / BEV

    E711241957 / ERZ

    E711722708 / ENT

    E754A50063 / ENT

    E758040898 / ERZ

    F02E915901 / ERZ

    Könnte es sein, das ich bei

    Code
    Case StringInStr($line3[0], "Bevollmächtigter des Erzeugers")
                    Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")

    die Leerzeichen zwischen "Bevollmächtigter des Erzeugers" irgendwie "anders" schreiben muss?

    Wo liegt denn der Unterschied (das ist eine Verständnisfrage für mich) zwischen dem rohen Script und dem kompilierten Script

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 12. Dezember 2018 um 13:45

    Hallo Moombas, jetzt ich raus :)

    Wie kann ich den die Variable prüfen, wenn ich das Script bereits kompiliert habe? Soll ich eine Msgbox dazu verwenden, oder was meinst du genau?

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 12. Dezember 2018 um 13:02

    Hallo zuammen,

    jetzt muss ich das Ticket nochmals anfassen, da mir eine Sache unklar ist. Doch kurz zur Erklärung, was ich bisher mache (soll irgendwann mal perfekter werden, aber eins nach dem anderen)

    Ich öffne von Hand eine Internetseite, melde mich dort an, klicke ein paar Schaltflächen, bis ich zur Zielseite komme. Dort lasse ich mir den Quelltext anzeigen und markiere alles und kopiere den Inhalt in die Zwischenablage.

    Dann kommt mein Script, welches auch gut funktioniert, bis auf ...

    Mein Script
    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
        #AutoIt3Wrapper_Icon=zks.ico
        #AutoIt3Wrapper_Res_Comment=Parse die ZKS Seite (Quelltext) nach behördlichen Nummern und Rollen
        #AutoIt3Wrapper_Res_Description=ZKS Teilnehmernummern und -rollen Parser
        #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
        #AutoIt3Wrapper_Res_SaveSource=y
        #AutoIt3Wrapper_Res_Language=1031
        #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
        #AutoIt3Wrapper_Run_Stop_OnError=y
        #AutoIt3Wrapper_Run_Tidy=y
        #AutoIt3Wrapper_Run_Au3Stripper=y
        #Au3Stripper_Parameters=/mo /SCI=1
        #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
        ; 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)
        
        #include <string.au3>
        #include <GUIConstantsEx.au3>
        #include <WindowsConstants.au3>
        #include <MsgBoxConstants.au3>
        #include <Array.au3>
        
        Global $guiButton, $guiInput1, $guiInput2, $ReadCombo, $ReadInput, $ZKSFile
        
        GUI()
        
        While 1
            $msg = GUIGetMsg()
            Switch $msg
                Case $GUI_EVENT_CLOSE
                    GUIDelete()
                    Exit
                Case $guiButton
                    $ReadInput = GUICtrlRead($guiInput1)
                    $ReadCombo = GUICtrlRead($guiInput2)
                    PARSEN_Dokumentenname()
                    PARSEN_Inhalt()
            EndSwitch
        WEnd
        
        Func GUI() ; GUI erstellen
            Local $gui = GUICreate("ZKS Postfach Teilnehmer Parser", 350, 80)
            $guiButton = GUICtrlCreateButton("Zwischenablage parsen", 80, 20, 200, 40)
            GUISetState(@SW_SHOW)
        EndFunc   ;==>GUI
        
        Func PARSEN_Dokumentenname() ; hier ermittle ich den Provider Namen und erstelle daraus ein Textdatei mit dessen Namen.
            $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")
                $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
        EndFunc   ;==>PARSEN_Dokumentenname
        
        
        Func PARSEN_Inhalt() ; hier ermittle ich die verschiedenen Nummern und Rollen
            $str = ClipGet() ; Zwischenablage abfragen
            $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
                If StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then
                    Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")
                EndIf
                If StringInStr($line3[0], "Erzeuger") And Not StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then
                    Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ")
                EndIf
                If StringInStr($line3[0], "Beförderer") Then
                    Local $sString = StringReplace($line3[0], "Beförderer", "BEF")
                EndIf
                If StringInStr($line3[0], "Entsorger") Then
                    Local $sString = StringReplace($line3[0], "Entsorger", "ENT")
                EndIf
                If StringInStr($line3[0], "Makler") Then
                    Local $sString = StringReplace($line3[0], "Makler", "MAK")
                EndIf
                If StringInStr($line3[0], "kurzfr.Lag./Umschlag") Then
                    Local $sString = StringReplace($line3[0], "kurzfr.Lag./Umschlag", "ZWL")
                EndIf
                ConsoleWrite($sString) ; Ausgabe des Ergebnis in unteres Output Fenster - zur Kontrolle
                FileWrite($ZKSFile, $sString) ; Ausgabe in meine Text Datei
            Next
            MsgBox(64, "Fertig", "Die Zwischenablage wurde geparst", 1) ; Rückmeldung, das es fertig ist.
        EndFunc   ;==>PARSEN_Inhalt
    Alles anzeigen

    Folgendes Problem hab ich irgendwie mit diesen Zeilen

    Code
    If StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then
                Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")
    EndIf
    If StringInStr($line3[0], "Erzeuger") And Not StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then
                Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ")
    EndIf

    Wenn ich das Script via F5 direkt aus SciTE ausrufe, dann wird in der Textdatei der String "Bevollmächtigter des Erzeugers" in den String "BEV" ersetzt.

    Wenn ich jedoch das Script für x64 kompiliere und als EXE aufrufe, dann bleibt "Bevollmächtigter des Erzeugers" erhalten.

    Sorry, das verstehe ich jetzt überhaupt nicht.

    Bräuchte hier bitte mal Unterstützung

    Vielen Dank

  • Den Programm Name einblenden, statt Aut2Exe

    • Code4Fun
    • 11. Dezember 2018 um 16:12

    Hallo,

    mir ist gerade aufgefallen, als ich eine Autoit EXE in die Taskbar gelegt habe, dass diese, sobald man mit der Maus darüber fährt, sich mit "Aut2Exe" meldet. Was muss ich denn beim Compilieren beachten, um den Programm Namen oder ähnliches zu sehen?

    Vielen Dank

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 11. Dezember 2018 um 16:07

    Sorry, war mir nicht bewußt. Werde ich das nächste mal nicht mehr machen. Danke für den Hinweis

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™