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. Windi

Beiträge von Windi

  • Exe im Hintergrund laufen lassen

    • Windi
    • 10. Januar 2023 um 16:47

    Ganz einfach!

    Ich weiß nicht was ich da machen muss.

    Hab vorhin mit _MouseTrap(0, 0, 0, 0) gespielt, dass konnte ich fast nicht mehr beenden. :Face:

    Hab den PC aus und wieder angemacht

    und die Maus ging immer noch nicht.

    Den Task Manager mit Pfeiltasten bedient usw.

    Das hat mir für heute gereicht. <X

    LG Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 10. Januar 2023 um 15:54

    Habs soweit hinbekommen!

    WinSetOnTop() war richtig

    2 Fenster gehen noch auf, damit kann ich leben

    Hier der gewünschte Link:

    _shellExecuteHidden (allow no windows to become visible)
    Run a process and surpress any windows created by that process that may become visible. Main purpose is to automate gui-applications on a hidden desktop so…
    www-autoitscript-com.translate.goog

    LG Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 10. Januar 2023 um 11:59

    Hab mal einiges durchprobiert!

    ControlHide() und ControlClick()

    WinSetTrans($sWinTitle, '', 0)

    das Fenster blitzt immer noch kurz auf.

    WinMove($sWinTitle, '', -3000, -3000

    schiebt er das Fenster in die linke obere ecke sichtbar.

    Hab im englischen Forum gelesen, dass man es in einem verstecktem Desktop machen kann.

    Das kriege ich als Anfänger nicht hin.

    Wenn keiner eine andere Idee hat muss es halt so bleiben.

    Danke für Euere Bemühungen.

    LG Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 10. Januar 2023 um 08:28

    Hi Alina,

    du kannst Komoot auch auf dem PC, ohne Anmeldung benutzen.

    Hier der Link:

    https://www.komoot.de/

    oder direkt zum Routenplaner:

    Der beste Routenplaner zum Radfahren, Wandern und Laufen | Komoot
    Der leistungsfähigste Outdoor-Routenplaner für perfekte Fahrrad- MTB- und Rennradtouren, die schönsten Wanderungen und die besten Lauf- und Joggingstrecken.
    www.komoot.de

    Gruß Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 9. Januar 2023 um 23:38

    Hallo Alina,

    Hier mal ein Foto von der App

  • Exe im Hintergrund laufen lassen

    • Windi
    • 9. Januar 2023 um 22:57

    Hallo Peter,

    ein Bild hab ich im Vordergrund, aber Itn kommt immer wieder durch.

    Die erste Seite bleibt weg - und wenn die Einstellungen kommen - gehen die alle wieder kurz auf.

    Code
     WinSetState("","[CLASS:#32770]", @SW_HIDE)

    kommt so ca. 1 sek. zu spät.

    Gruß Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 9. Januar 2023 um 22:53

    Alina kennst du die App Komoot!

    ich denke die ist das richtige für dich.

    Da kannst du auch Steigungen drin sehen.

    Gruß Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 9. Januar 2023 um 21:43

    Danke Alina für die Meldung.

    ITN ist nicht von TomTom

    ITN ist ein Converter mit dem du Geocode für fast fast alle Navis convertieren kannst.

    Unter anderem auch Touren optimieren.

    Und das würde ich gerne im Hintergrund laufen lassen.

    Es gibt da viele Einstellungen und die soll niemand verändern, sonst läuft mein Prog nicht mehr.

    Gruß Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 9. Januar 2023 um 21:12

    Danke für deine Meldung.

    Die exe wird in ein Programm integriert.

    Unter anderem läuft noch Excel und Webdriver im Hintergrund, dass funktioniert schon.

    Die ITN exe kann ich verstecken, aber dann kommt z. B. eine Abfrage welche Datei geladen wird, Einstellungen usw.

    siehe Bilder

    Bild 1.JPGBild 2.JPG

    Mit

    Code
     WinSetState("","[CLASS:#32770]", @SW_HIDE)

    bleiben sie immer noch kurz auf dem Bildschirm und dann sind sie weg.

    Das ganze würde ich gern im Hintergrund laufen lassen.

    Wenn du noch Fragen hast melde dich.

    Gruß Werner

  • Exe im Hintergrund laufen lassen

    • Windi
    • 9. Januar 2023 um 17:17

    Hi,

    ich hoffe, ihr könnt mir weiter helfen.

    Ich kriege es einfach nicht hin, die kleinen Fenster auch im Hintergrund laufen zu lassen.

    Gibt es vielleicht noch eine andere Möglichkeit?

    Gruß Werner


    Code
    Global $Converter = "C:\Program Files (x86)\ITN Converter\ITNConv.exe"
    
    Converter()
    
    
    Func Converter()
        ;==>  Programm öffnen $hFen1
        ShellExecute($Converter, "","","", @SW_HIDE)
        ;Run(@ComSpec & $Converter , "", @SW_HIDE)
        WinSetState("","[CLASS:#32770]", @SW_HIDE)
    
        ; ==>ITN Converter Fenster
        WinActivate("ITN Converter", "")
           Local $hFen1 = WinGetHandle("ITN Converter") ;==> $hWnda Hauptfenster
        ; == Datei Öffnen
        ControlClick($hFen1, "", "[Class:Button;Instance:2]")
        Sleep(500)
    
    ; ==> Öffnen Fenster $hFen2
        Local $hFen2 = WinGetHandle("Öffnen")  ;==> $hWndb Öffnen Fenster
        WinWait("Öffnen", "",0 )
        WinWaitActive("Öffnen", "",0 )
        ControlClick($hFen2, "", 1152)
        Sleep(500)
    
         ;  Button Torenplaner Hauptfenster $hFen1
         ControlClick($hFen1, "", "[CLASS:Button; INSTANCE:11]")
         Sleep(500)
    
    
    EndFunc   ;==>Converter
    Alles anzeigen
  • Json

    • Windi
    • 30. Dezember 2022 um 11:40

    Ok nur keine Aufregung war ja nicht böse gemeint.

    Bin ja für jede Hilfe froh.

    AspirinJunkie

    Wow in deinem Script ist Tempo drin.

    Zitat von AspirinJunkie

    Denn: TomTom hat eine Einschränkung drin die nur (offensichtlich) 5 Anfragen pro Sekunde erlaubt.

    Das wusste ich auch nicht das die ausbremsen können.

    Hab mich auch schon beim Webdriver gewundert, dass ich viel mit sleep() arbeiten muss.

    Da gibt es bestimmt noch andere möglichkeiten von euch.

    Aber dazu später.

    Vielen Lieben Dank

    Windi

  • Json

    • Windi
    • 30. Dezember 2022 um 09:51

    Guten Morgen,

    @Oskar

    Entschuldigung hab gedacht ich müsste immer im Testforum veröffentlichen.

    (liegt wahrscheinlich am alter, oder im Moment an Carola :)

    AspirinJunkie

    (Hilfe bei Regex) hast du mir im #38 dieses Script gesendet.

    BugFix

    Zitat
    Code
    For $i = 0 To 29 ;? - warum - ist doch imemr der selbe Wert?

    Die Original Daten darf ich nicht veröffentlichen.

    Es sind in der Regel 25 - 120 Abstände die abgefragt werden.

    Bei 10 ist es kein Problem, aber bei 120 dauert es schon eine ganze Weile.

    Bin als Anfänger nicht so fit wie ihr, dass ich die Zeiten exact berechnen kann.

    Es geht mir ja nur darum, wie ich den Prozess schneller machen kannn.

    Vielen Dank

    für eure schnelle Hilfe.

    Windi

    Alles anzeigen
  • Json

    • Windi
    • 29. Dezember 2022 um 21:18

    Hi, ich mal wieder!

    Gibt es eine Möglichkeit Json zu beschleunigen.

    Hier das sript von AspirinJunkie

    C
    #include "JSON.au3"
    #include <Array.au3>
    
    ;Global CONST $SAPIKEY_TOMTOM = "...."
    
    Global $KM = 86
    
    
    Abstand()
    
    Func Abstand() ; Abstand zwischen 2 Koordinaten
    Local $aDaten [30] [2]
    Global $aKoordinaten [2]
    
    For $i = 0 To 29
        Local $sAdresse = "49.9638321,7.7693866:50.44668078498122,7.830614351617667"
        Local $aKoordinaten = _tomtom_geocodeAdress($sAdresse, $SAPIKEY_TOMTOM)
        $aDaten [$i] [0] = $aKoordinaten [0]
        $aDaten [$i] [1] = $aKoordinaten [1]
    Next
    
    _ArrayDisplay($aDaten)
    
    EndFunc   ;==>Abstand #####
    
    
    Func _tomtom_geocodeAdress($sAdresse, $sApiKey = $SAPIKEY_TOMTOM)
    
    Global $sURL = StringFormat("https://api.tomtom.com/routing/1/calculateRoute/%s/json?&language=de-DE&section" & _
                                "Type=traffic&routeType=fastest&traffic=true&avoid=unpavedRoads&travelMode=car&vehicleMaxSpeed=%s&key=%s" & _
                                _URIEncode($sApiKey), $sAdresse,  $KM)
    
    ;ConsoleWrite($surl & @CRLF)
        ; Abfrage senden und Ergebnis in Variable speichern:
        Local $sJSONReturn = InetRead($sURL)
        If @error Then Return SetError(1, @error, Null)
        $sJSONReturn = BinaryToString($sJSONReturn)
    
        ; JSON-String parsen:
        Local $oJSON = Json_Decode($sJSONReturn)
    
        ;  Lat und Lon aus Ergebnis extrahieren
        Local $fMet = Json_Get($oJSON, ".routes[0].summary.lengthInMeters")
        If @error Then Return SetError(3, @error, Null)
        Local $fSek = Json_Get($oJSON, ".routes[0].summary.travelTimeInSeconds")
        If @error Then Return SetError(4, @error, Null)
    
        Local $aRet[2] = [ $fMet, $fSek]
        Return $aRet
    EndFunc
    
    ; Funktion um Adresse innerhalb der URI zu kodieren:
    Func _URIEncode($sData)
        ; Prog@ndy
        Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
    Local $nChar
        $sData = ""
        For $i = 1 To $aData[0]
            $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   ;==>_URIEncode
    Alles anzeigen

    wollte die Datei Test.Json hochladen

    geht nicht (ungültige Dateiendung)

    Ich brauche nur die grünen Daten.

    Meine Frage?

    Kann man das laden nach den Daten abbrechen.

    Gruß

    Windi

  • ControlSend an Textfeld

    • Windi
    • 29. Dezember 2022 um 19:25
    Zitat von water

    Darf ich dazu auf das Tutorial im engl. Wiki hinweisen? https://www.autoitscript.com/wiki/WebDriver

    Das kann ich nur bestätigen.

    Ohne Dan, aus dem engl. Forum hätte ich, dass niemals geschafft.

  • ControlSend an Textfeld

    • Windi
    • 29. Dezember 2022 um 18:50
    Zitat von SOLVE-SMART

    Hi zusammen,

    Windi:
    Dein Vorschlag in Post #6 bezieht sich auf den Login der Webseite, doch die ursprüngliche Frage bezieht sich wohl auf das Produkt StarMoney (für Windows), welches keine Web-App ist.
    Daher bringt dies Schleifchen leider nicht viel. Dennoch gut dargestellt wie leicht der Login mit dem WebDriver (au3WebDriver) sein kann 👍 .

    Danke Solve-Smart,

    ich hab gegoogelt und sah, dass man sich da auch online einloggen kann.

    Hab dann gesehen, dass er das Programm auf dem PC hat.

    Deshalb hab ich mich auch nicht mehr gemeldet.

    Wollte halt auch mal ein Beitrag leisten, für die viele gute Hilfe hier im Forum.

    Water Danke dir ist leichter Verlauf

    Gruß Windi

  • Body in SMTP Mail

    • Windi
    • 29. Dezember 2022 um 12:19

    Dranke :)

    Hab Carola! <X

    kann nur besser werden

  • Body in SMTP Mail

    • Windi
    • 29. Dezember 2022 um 11:57

    Danke!!!

    War beides gut!

    Guten Rutsch

    Windi

  • Body in SMTP Mail

    • Windi
    • 29. Dezember 2022 um 11:23

    Hallo Ihr Experten,

    was muss ich tun, um die Ausgabe im Body der Mail wie folgt zu erhalten.

    Ausgabe bei mir:

    Wert 1|Wert 2||Wert 3|Wert 4||Wert 5

    So sollte es aussehen:

    Wert 1

    Wert 2

    Wert 3

    Wert 4

    Wert 5

    C
    #include <File.au3>
    #include <String.au3>
    #Include <Array.au3>
    #include <WindowsConstants.au3>
    
    
    Local $aTest [7]
    $aTest[0] = "Wert 1"
    $aTest[1] = "Wert 2"
    $aTest[2] = ""
    $aTest[3] = "Wert 3"
    $aTest[4] = "Wert 4"
    $aTest[5] = ""
    $aTest[6] = "Wert 5"
    _ArrayDisplay($aTest)
    
    Global $Liste = _ArrayToString($aTest)
    
    Local $oMyRet, $oMyError, $to, $cc, $bcc, $subject, $body, $attachment, $aRecords, $body_txt
    Sendmail()
    
    sleep (2000)
    
    Func Sendmail()
    
        ;MsgBox(0,"", $strData2)  ;mailadresse prüfen
    
        Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
        ;##################################
        ; Variables
        ;##################################
    
        $s_SmtpServer = "mail.gmx.net"                 ; Postausgangsserver smtp-server
        $s_FromName = "Test"                           ; Name wer die Mail versendet
        $s_FromAddress = "test@gmx.de"                 ; Versender Mailadresse
        $s_ToAddress = "test@xx.de"                    ; Empfänger Mailadresse
        $s_Subject = "Test 1"                          ; Betreff der Mail
        $as_Body = $Liste                              ; Text der Mail
        $s_AttachFiles = ""                            ; Mail Anhang
        $s_CcAddress = ""                              ; Kopie an
        $s_BccAddress = ""                             ; Blind Kopie an
        $s_Username = "test@gmx.de"                    ; Benutzername Mailaccount
        $s_Password = "*******"                        ; Passwort Mailaccount
    ;    $IPPort = 25                                  ; Sipport alternativ
    ;    $ssl = 0                                      ; 0 oder 1 für ssl Verschlüsselung
        $IPPort=465                                    ; GMAIL port
        $ssl=1                                         ; GMAIL 0 oder 1 für ssl Verschlüsselung
    
        ;##################################
        ; Script
        ;##################################
        Global $oMyRet[2]
        ;MsgBox(0,"", $s_SmtpServer& $s_FromName& $s_FromAddress& $s_ToAddress& $s_Subject& $as_Body& $s_AttachFiles& $s_CcAddress& $s_BccAddress& $s_Username& $s_Password& $IPPort& $ssl)
        $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
        If @error Then
            MsgBox(0, "Error sending message", "Error code:" & @error & "  Description:" & $rc,1)
        EndIf
    
    EndFunc   ;==>Sendmail
    
    
    Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
        $objEmail = ObjCreate("CDO.Message")
        $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
        $objEmail.To = $s_ToAddress
        Local $i_Error = 0
        Local $i_Error_desciption = ""
        If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
        If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
        $objEmail.Subject = $s_Subject
        If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
            $objEmail.HTMLBody = $as_Body
        Else
            $objEmail.Textbody = $as_Body & @CRLF
        EndIf
        If $s_AttachFiles <> "" Then
            Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
            For $x = 1 To $S_Files2Attach[0]
                $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
                If FileExists($S_Files2Attach[$x]) Then
                    $objEmail.AddAttachment($S_Files2Attach[$x])
                Else
                    $i_Error_desciption = $i_Error_desciption & @LF & 'File not found to attach: ' & $S_Files2Attach[$x]
                    SetError(1)
                    Return 0
                EndIf
            Next
        EndIf
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
        ;Authenticated SMTP
        If $s_Username <> "" Then
            $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
            $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
            $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
        EndIf
        If $ssl Then
            $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        EndIf
        ;Update settings
        $objEmail.Configuration.Fields.Update
        ; Sent the Message
        $objEmail.Send
        If @error Then
            SetError(2)
            Return $oMyRet[1]
        EndIf
    EndFunc   ;==>_INetSmtpMailCom
    
    Func MyErrFunc()
        $HexNumber = Hex($oMyError.number, 8)
        $oMyRet[0] = $HexNumber
        $oMyRet[1] = StringStripWS($oMyError.description, 3)
        ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
        SetError(1); something to check for when this function returns
        Return
    EndFunc   ;==>MyErrFunc
    Alles anzeigen

    Gruß

    Windi

  • ControlSend an Textfeld

    • Windi
    • 28. Dezember 2022 um 21:45

    Wenn du es auf einem anderen Bildschirm laufen lässt, wird es vermutlich nicht mehr gehen.

    Weil Maus Koordinaten nicht mehr stimmen.

    Und für was brauchst du 7 Sekunden Ladezeit?

  • ControlSend an Textfeld

    • Windi
    • 28. Dezember 2022 um 19:55

    Hi Schleifchen,

    wenn du Firefox hast kannst du das verwenden.

    C
    #include "wd_core.au3"
    #include "wd_helper.au3"
    #include "wd_capabilities.au3"
    
    ;*********************************************************
    ; ==> Ordner "WebDrv" nach "C: kopieren oder Pfad anpassen
    ; Path zum Geckodriver
    FileChangeDir("C:\WebDrvC:\Users\xx2\Desktop\drv2022\au3WebDriver-0.11.0")
    ;*********************************************************
    
    
    ;Dos Console für Fehlerermitlung
    $_WD_DEBUG  =  $_WD_DEBUG_Info   ; ==> Dos Fehlerconsole an
    ;$_WD_DEBUG  =  $_WD_DEBUG_None    ; ==> Dos Fehlerconsole aus
    
    
    ; Login Daten
    Local $mail = "abc@gmx.de"
    Local $pass = "11111111"
    
    
    
    
    Global $sDesiredCapabilities, $sSession
    SetupGecko()
    _WD_Startup()
    Global $sSession = _WD_CreateSession($sDesiredCapabilities)
    
    ; ==> Fenster maximalgröße
    _WD_Window($sSession, "Maximize", "")
    _WD_Navigate($sSession, "https://www.starmoney.de/privat")
    ;********************************************************************************************************
    
    
    
    ; ==> Click Coockie weg  *******************************************************************************
    Local $xPath = "//button[@class='button button--primary']"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $xPath  )
    Local $sButton = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    _WD_ElementAction($sSession, $sButton, 'click')
    ;*********************************************************************************************************
    
    
    
    
    ; ==> Click Anmelde button  *****************************************************************
    Local $xPath = "//a[contains(text(),'Login')]"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    Local $sButton = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    _WD_ElementAction($sSession, $sButton, 'click')
    ;**********************************************************************************************************
    
    
    
    ; ==> Emailadresse eintragen  funtioniert*********************************************************
    Local $xPath = "//input[@type='text']"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    Local $sElement_mail = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    _WD_ElementAction($sSession, $sElement_mail, 'value',$mail)
    
    
    
    ;; ==> Passwort eintragen  funktioniert*********************************************************
    Local $xPath = "//input[@type='password']"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    Local $sElement_pass = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    _WD_ElementAction($sSession, $sElement_pass, 'value',$pass)
    
    
    
    ; ==> Click Login button  funktioniert *******************************************************************************
    Local $xPath = "//input[@type='submit']"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $xPath  )
    Local $sButton = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $xPath )
    _WD_ElementAction($sSession, $sButton, 'click')
    ;*********************************************************************************************************
    
    
    
    MsgBox(0,"","") ; ==> hält Browser an
    _WD_DeleteSession($sSession)
    _WD_Shutdown()
    
    
    ; TTHandy Setup
    Func SetupGecko()
       _WD_Option("Driver", "C:\WebDrv22\au3WebDriver-0.11.0\geckodriver.exe")
       _WD_Option('DriverParams' ,  '--log trace --marionette-port 2828')
       _WD_Option('Port', 4444)
        ;~ ==> neues Profil anlegen funktioniert
         $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"browserName": "firefox", "acceptInsecureCerts":true}}}'
    EndFunc
    Alles anzeigen

    Pfad zum Webdriver anpassen, Mailadresse und Passwort.

    Gruß

    Windi

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™