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

Beiträge von qwert23

  • In Word Datei schreiben

    • qwert23
    • 22. Februar 2014 um 20:43

    Dann bitte ich Dich um mehr Informationen, wie Welche Fehlermeldungen erscheinen?
    Ist die Word.au3 in Deinem Include-Verzeichnis?
    Deine Zusatzfrage kann ich so nicht beurteilen, da in dem kleinen Beispiel keine schreibgeschützte / gesperrte Datei erzeugt wird.

  • In Word Datei schreiben

    • qwert23
    • 22. Februar 2014 um 20:31

    Du verwendest die WordEx.au3.
    Word.au3 und Wordex.au3 können m.W. nicht gleichzeitig verwendet werden.

  • In Word Datei schreiben

    • qwert23
    • 22. Februar 2014 um 19:02

    Ich setze mal voraus, dass Du die #include <Word.au3> einbindest.

    _DocSaveAs bedingt die Nennung des Dateinamen ohne Zusatz, wie .doc.
    In die "ELSE" Abfrage kommt Dein Script nicht, da der Filter nur ".doc" zulässt. Bitte prüfe das mal nach.

    Der Ablauf ist dann:
    1. mit _GUICtrlRichEdit_StreamToFile eine rtf Datei erzeugen (habe ich aus der Hilfedatei entnommen)
    2. mit _WordCreate diese Datei in Word laden (kann auch im Hintergrund erfolgen...siehe Hilfe)
    3. Inhalte sammeln mit _WordDocGetCollection
    4. Datei mit neuem Dateinamen - ohne Endung - dafür mit Angabe des Zielformats (0) speichern

    Zielformate im _WordDocSaveAs sind u.a.:
    0 = .doc
    3 = .txt
    6 = .rtf
    8 = .htm
    11 = .xml
    12 = .docx
    17 = .pdf

    Exemplarisch würdest Du die Speicherung in Word so erreichen:

    Spoiler anzeigen
    [autoit]


    #include <word.au3>
    _GUICtrlRichEdit_StreamToFile($Edit1, @ScriptDir & "\gcre.rtf") ;this is what I tried
    $oWord = _WordCreate(@ScriptDir & "\gcre.rtf")
    $oDoc = _WordDocGetCollection ($oWord, 0)
    $DocNeu = _WordDocSaveAs($oDoc,@ScriptDir & "\TestAlsDoc", 0) ; hier ist auch _WordDocSaveAs($oDoc,@ScriptDir & "\gcre",0) möglich
    _WordDocClose($oDoc)

    [/autoit]

    Damit wirst Du Dein Script sicher anpassen können.

  • Excel-Datei mit mehreren Excel-Sheets in eine PDF-Datei umwandeln

    • qwert23
    • 20. Februar 2014 um 18:18

    Ja, auch ich empfehle die ExcelEX UDF zu verwenden.

  • Excel-Datei mit mehreren Excel-Sheets in eine PDF-Datei umwandeln

    • qwert23
    • 20. Februar 2014 um 13:23

    Fragst Du doppelt? [ offen ] Excel nach PDF konvertieren?

    Wenn Du Deinen pdf-Standarddrucker bestimmst, dann würde Dir sicherlich zum Drucken bereits die Anweisung:

    [autoit]

    $oExcel.ActiveWorkbook.PrintOut

    [/autoit]

    weiterhelfen. Diese Anweisung druckt Deine gesamte Exceldatei aus. Die Parameter dazu findest Du bei Google / MSDN.

  • Webseitendemo mit z.B. IE.au3 und Akkordeon-Widget

    • qwert23
    • 14. Februar 2014 um 18:01

    Der Inhalt des "Akkordion" ist teilweise so groß, dass Du noch scrollen müßtest damit alles lesbar ist. Somit ist es sicherlich der einfachste Weg die Koordinaten mit einem Mouseklick zu steuern.

    Eine Idee wäre, allerdings kann hier nicht hilfreich sein, einen Screenshot der jeweiligen Seite zu erstellen und den jeweiligen Text auslesen. Mit GDI+ müsste das machbar sein. Ob damit die Koordinaten bestimmt werden können entzieht sich meinem Wissen.
    Vielleicht hilft dieses Projekt: Multiple MouseGetPos mit GUI
    oder PushTheButton, ermöglicht Mausklick auf sonst nicht erreichbare Grafiken UPDATE 1.36

  • _FileWriteToLine Problem

    • qwert23
    • 13. Februar 2014 um 23:35

    In der Funktion _writeData() probiere mal diese Änderung:

    Spoiler anzeigen
    [autoit]

    $delanzahl = ($ende-1) - ($start+1)
    For $i = 1 to $delanzahl
    _FileWriteToLine($file2, $start+1, "", 1) ;so sollte es funktionieren
    MsgBox(0, "Test", @error & " " & $i & " " & _FileCountLines($file2))
    Next

    [/autoit]
  • Webseitendemo mit z.B. IE.au3 und Akkordeon-Widget

    • qwert23
    • 12. Februar 2014 um 10:04

    Bitte erläutere mal kurz was mit dem "Akkordeon" gemeint ist. Ein Bild aus der Webseite wäre nett.

  • Webseitendemo mit z.B. IE.au3 und Akkordeon-Widget

    • qwert23
    • 11. Februar 2014 um 23:18

    Ist es korrekt verstanden, dass Du von einer Webseite alle Unterseiten anzeigen möchtest und das in einem Zeitintervall?

    Dann hier ein Vorschlag, der sicherlich noch perfektioniert werden kann. Es werden alle .html Links angesprochen.
    Externe Links und E-Mailadressen bleiben unberücksichtigt.
    Die Zeitsteuerung ist hier einfach via Msgbox und sleep umgesetzt.

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $oIE = _IECreate("www.fue-seminare.de")
    Local $oLinks = _IELinkGetCollection($oIE)
    Local $iNumLinks = @extended
    MsgBox(0, "Link Info", $iNumLinks & " Links gefunden",2)

    [/autoit] [autoit][/autoit] [autoit]

    For $oLink In $oLinks
    If StringinStr($oLink.href,"html") Then
    MsgBox(0, "Link Info", $oLink.href,1)
    _IECreate($oLink.href)
    sleep(3000)
    WinClose(WinGetTitle("[active]"))
    EndIf
    Next

    [/autoit]
  • in PDF Datei Zusatzinfos speichern

    • qwert23
    • 11. Februar 2014 um 11:23

    War denn der Titel bereits im UrsprungPDF gesetzt?
    Das Beispiel basiert darauf, dass bereits vorhandene Eigenschaften neu gesetzt werden.
    Mit dem Eintrag in Zeile 26 fällst Du in der Funktion (If-Abfrage) raus. Deshalb kann hier nichts geschrieben werden.

    Um in selbiger Datei zu bleiben sind die Zeilen 72-76 anzupassen. Hier einfach den ursprünglichen Dateinamen verwenden und die Datei schreiben.

  • in PDF Datei Zusatzinfos speichern

    • qwert23
    • 10. Februar 2014 um 19:16

    Mit Autoit gibt es hier ein Beispiel:
    http://www.autoitscript.com/forum/topic/13…sting-pdf-file/

    Es werden im Beispiel ausschließlich vorhandene Eigenschaften bedient.
    Um das zu ändern, ist die If-Abfrage in der Funktion

    [autoit]

    Func _PDF_SetProperties($sFile, $aOld, $aNew)

    [/autoit]

    anzupassen.

    Die Keywords werden mit \r\n in einzelne Zeilen aufgeteilt.

    Hier das Beispiel:

    Spoiler anzeigen
    [autoit]

    ; quelle: http://www.autoitscript.com/forum/topic/13…sting-pdf-file/

    [/autoit] [autoit][/autoit] [autoit]

    #include <Array.au3>;just for display the arrays

    [/autoit] [autoit][/autoit] [autoit]

    _Test()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Test()
    Local $sFile = @ScriptDir & "\DeinPDFDokument.pdf"
    Local $aOldData = _PDF_GetProperties($sFile)
    _ArrayDisplay($aOldData)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aNewData[6][2] = [["Title", "New Title"],["Producer", "New Producer"],["Author", "New Author"],["Creator", "New Creator"],["Subject", "New Subject"],["Keywords", "New keywords"]]

    [/autoit] [autoit][/autoit] [autoit]

    Local $sNewFile = _PDF_SetProperties($sFile, $aOldData, $aNewData)
    Local $aCheck = _PDF_GetProperties($sNewFile)
    _ArrayDisplay($aCheck)
    EndFunc ;==>_Test

    [/autoit] [autoit][/autoit] [autoit]

    Func _PDF_GetProperties($sFile)
    Local $a_Prop[6][2] = [["Title", ""],["Producer", ""],["Author", ""],["Creator", ""],["Subject", ""],["Keywords", ""]]
    Local $hFile = FileOpen($sFile)
    Local $sTxt = FileRead($hFile)
    FileClose($hFile)
    Local $title = StringRegExp($sTxt, "(?i)(/Title) {0,1}\((.*?)\)", 1)
    If @error = 1 Then
    $a_Prop[0][1] = "no match"
    Else
    $a_Prop[0][1] = $title[1]
    EndIf
    Local $producer = StringRegExp($sTxt, "(?i)(/Producer) {0,1}\((.*?)\)", 1)
    If @error = 1 Then
    $a_Prop[1][1] = "no match"
    Else
    $a_Prop[1][1] = $producer[1]
    EndIf
    Local $author = StringRegExp($sTxt, "(?i)(/Author) {0,1}\((.*?)\)", 1)
    If @error = 1 Then
    $a_Prop[2][1] = "no match"
    Else
    $a_Prop[2][1] = $author[1]
    EndIf
    Local $creator = StringRegExp($sTxt, "(?i)(/Creator) {0,1}\((.*?)\)", 1)
    If @error = 1 Then
    $a_Prop[3][1] = "no match"
    Else
    $a_Prop[3][1] = $creator[1]
    EndIf
    Local $subject = StringRegExp($sTxt, "(?i)(/Subject) {0,1}\((.*?)\)", 1)
    If @error = 1 Then
    $a_Prop[4][1] = "no match"
    Else
    $a_Prop[4][1] = $subject[1]
    EndIf
    Local $keywords = StringRegExp($sTxt, "(?i)(/Keywords) {0,1}\((.*?)\)", 1)
    If @error = 1 Then
    $a_Prop[5][1] = "no match"
    Else
    $a_Prop[5][1] = $keywords[1]
    EndIf
    Return $a_Prop
    EndFunc ;==>_PDF_GetProperties

    [/autoit] [autoit][/autoit] [autoit]

    Func _PDF_SetProperties($sFile, $aOld, $aNew)
    Local $hFile = FileOpen($sFile)
    Local $sTxt = FileRead($hFile)
    FileClose($hFile)
    For $i = 0 To UBound($aOld) - 1
    If $aOld[$i][1] <> "no match" Or $aOld[$i][1] <> "" Then
    $sTxt = StringRegExpReplace($sTxt, "(?i)(/" & $aOld[$i][0] & ") {0,1}\((.*?)\)", "/" & $aOld[$i][0] & " (" & $aNew[$i][1] &") ", 1)
    EndIf
    Next
    Local $sFileName = StringRegExpReplace($sFile, ".*\\(.*).{4}", "$1")
    Local $sNewFile = StringReplace($sFile, $sFileName, $sFileName & "_mod.pdf")
    Local $hNew = FileOpen($sNewFile, 18)
    FileWrite($hNew, $sTxt)
    FileClose($hNew)
    Return $sNewFile
    EndFunc ;==>_PDF_SetProperties

    [/autoit]

    Kommt das Deinen Vorstellungen nahe?

  • Daten von Website in Excel importieren

    • qwert23
    • 3. Februar 2014 um 17:38

    Dein Excelaufruf beinhaltet vieles und nichts...

    Der Aufruf zur Übergabe von $Array lautet:

    [autoit]

    _ExcelWriteSheetFromArray($oExcel, $Array, 1, 1, 0, 0)

    [/autoit]


    Alles weitere könnte auch mit ein paar Formeln in Excel formatiert werden.

  • Excel nach PDF konvertieren?

    • qwert23
    • 31. Januar 2014 um 12:03

    Das weiß ich aktuell nicht...
    Als Lösungsvorschlag, wenn Acrobat Writer installiert ist, würde ich anschließend die gewünschten pdf Dateien neu zusammenstellen.
    Dazu gibt es im engl. Forum Beispiel, wie dieses:

    Spoiler anzeigen
    [autoit]


    Dim $filelist[1]

    [/autoit] [autoit][/autoit] [autoit]

    global $sourcepath

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; example merging files
    $t = ObjCreate("acrobat.pdf")

    [/autoit] [autoit][/autoit] [autoit]

    $var= FileSelectFolder("Select folder", "","",$sourcepath) & ""
    MergeFiles($var,FileSaveDialog( "Select Filename", $var, "PDF Files (*.pdf)", 3))
    ; example end

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func GetRotation($Targetpath)
    ;----------------------------------------------------
    ; Get the Rotation of a Page (eg. page 1)
    ; Ex.: msgbox(0,"Rotation",GetRotation("c:\pdft\test.pdf" ))
    ;----------------------------------------------------

    if not FileExists($Targetpath) then
    return -1
    endif

    $SourcePDF = ObjCreate("AcroExch.PDDoc")

    if not IsObj($SourcePDF) then
    return -2
    endif

    $b = $SourcePDF.Open($Targetpath)
    $rotation = $sourcePDF.AcquirePage(0).GetRotate
    $SourcePDF.close
    $sourcePDF=""
    return $rotation ; in Degree
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func MergeFiles($SourcePath , $DestinationPath)

    [/autoit] [autoit][/autoit] [autoit]

    if fileexists($DestinationPath) then
    FileDelete($DestinationPath)
    endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    getfiles($sourcepath, "*.pdf") ; Search Files in Dir
    if $filelist[0] < 2 then
    Msgbox(32,"Info", "Ther are less than two files in folder")
    exit
    endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    for $n=2 to $filelist[0]
    ;msgbox(0,"Info" , $filelist[0] & " " & $filelist[$n])
    ProgressOn("PDF Merge","Processing ...")
    ProgressSet((($n-1)/$filelist[0]) * 100, $filelist[$n-1])

    if $n=2 then
    pdfmerge($sourcepath & $filelist[$n-1],$sourcepath & $filelist[$n], $DestinationPath)
    else
    pdfmerge($DestinationPath, $sourcepath & $filelist[$n], $DestinationPath)
    endif
    next
    ProgressSet(100, $filelist[$filelist[0]])
    sleep(800)
    ProgressOff()
    Endfunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func getfiles($dir, $filter) ; search files in dir
    Global $filelist[1]

    [/autoit] [autoit][/autoit] [autoit]

    $n=0
    $search= FileFindFirstFile($dir & $filter)
    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $n=$n+1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    redim $filelist[$n+1]
    $filelist[$n]= $file
    $filelist [0] = $n
    WEnd
    ; Close the search handle
    FileClose($search)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func PDFMerge($File1, $File2, $Fileout)
    ; ---------------------------------------
    ; File1 first file
    ; File2 second file (inserted after)
    ; Fileout is the saving name
    ;
    ; returns 1 on success
    ; returns -1 Error insert Pages
    ; returns -2 Error Object Create
    ;----------------------------------------

    $SourcePDF = ObjCreate("AcroExch.PDDoc")
    if not IsObj($SourcePDF) then
    return -2
    endif

    $b = $SourcePDF.Open($file1)

    [/autoit] [autoit][/autoit] [autoit]

    $TargetPDF = ObjCreate("AcroExch.PDDoc")
    $b = $TargetPDF.Open($file2)

    [/autoit] [autoit][/autoit] [autoit]

    $intSourcePgs = $SourcePDF.GetNumPages
    $intInsertPgs = $TargetPDF.GetNumPages
    if not $SourcePDF.InsertPages($intSourcePgs-1, $TargetPDF, 0, $intInsertPgs, False) = -1 then
    $SourcePDF.Close
    $TargetPDF.Close
    $SourcePDF=""
    $TargetPDF=""
    return -1
    endif
    $b = $SourcePDF.Save(1, $fileout)
    $SourcePDF.Close
    $TargetPDF.Close
    $SourcePDF=""
    $TargetPDF=""
    return 1
    endfunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func GetPagesCount($target); count pages
    $AcroPDDoc = ObjCreate("AcroExch.PDDoc")
    if @error then return -1
    $bPDF = $AcroPDDoc.Open($target)
    if @error then return -2
    $Pages= $AcroPDDoc.GetNumPages
    $bPDF = $AcroPDDoc.Close
    return $pages
    endfunc

    [/autoit]

    Sicherlich bist Du damit flexibler und kannst die Arbeitsblätter individuell zusammenstellen.
    Das Script läßt sich dazu schnell anpassen, damit alles im Hintergrund erfolgt.
    Kommt das Deinen Vorstellungen nahe?

  • Excel nach PDF konvertieren?

    • qwert23
    • 31. Januar 2014 um 10:15

    Mit

    _ExcelSheetActivate($oExcel, "hier das Arbeitsblatt angeben")

    das Arbeitsblatt aktivieren und erneut speichern. Bitte jeweils die Zieldatei neu bestimmen.

  • Excel nach PDF konvertieren?

    • qwert23
    • 31. Januar 2014 um 09:06

    Die Zeile 17 war nicht korrekt. Habe nicht gesehen, dass mit c&p der "\" nicht korrekt übergeben wurde. $i wird in diesem Beispiel nicht benötigt und ist entfernt. Sorry!

  • Excel nach PDF konvertieren?

    • qwert23
    • 30. Januar 2014 um 16:43

    Mit dem ExcelEX UDF ist das speichern als pdf auch direkt möglich.

    Hier die modifizierte Funktion aus dem ExcelEX UDF:

    Spoiler anzeigen
    [autoit]


    ;===============================================================================
    ; Function Name: _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
    ; Description: Speichert eine Exceldatei in einem bestimmten Format ab
    ; Parameter(s): $oExcel Ein Excelobject, wie es von _ExcelbookOpen oder _ExcelbookNew zurückgegeben wird
    ; $Fileformat Der Dateityp, in dem gespeichert werden soll (xlsx, xlsb, xlsm, xls, csv, txt, prn)
    ; $NewFilepath Speicherort und Dateiname der neuen Datei
    ; $Close = True Soll nach dem Speichern das Objekt geschlossen werden? (Standard = True)
    ; Return Value(s): Erfolg Gibt 1 zurück
    ; Fehler @error 1 - $oExcel ist kein Objekt
    ; 2 - $Fileformat ist keine bekannte Dateiendung oder Formatnummer
    ; Author(s): TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Copyright: TheLuBu ([email='LuBu@veytal.com'][/email])
    ;===============================================================================
    Func _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
    If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
    Switch $Fileformat
    Case 51, "xlsx", ".xlsx"
    $Fileformat = 51
    Case 50, "xlsb", ".xlsb"
    $Fileformat = 50
    Case 52, "xlsm", ".xlsm"
    $Fileformat = 52
    Case 6, "csv", ".csv"
    $Fileformat = 6
    Case -4158, "txt", ".txt"
    $Fileformat = -4158
    Case 36, "prn", ".prn"
    $Fileformat = 36
    Case 56, "xls", ".xls"
    $Fileformat = 56
    Case 57, "pdf", ".pdf" ; hinzugefügt
    $Fileformat = 57 ; hinzugefügt
    Case Else
    Return SetError(2, 0, 0)
    EndSwitch
    With $oExcel
    .Application.DisplayAlerts = False ; Schaltet Fehlermeldungen bei Excel aus
    .ActiveWorkBook.SaveAs($NewFilepath, $Fileformat)
    If $Close Then
    .ActiveWorkbook.Close ; Schließt die Tabelle
    .Quit ; Schließt das Workbook
    EndIf
    EndWith
    Return 1
    EndFunc ;==>_ExcelSaveAsEX

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Hier noch ein Beispiel auf Basis der Hilfedatei:

    Spoiler anzeigen
    [autoit]


    #include <Excel.au3>
    #include <excelex.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $sFilePath1 = @ScriptDir & "\Test1.xlsx" ; Diese Datei sollte bereits existieren
    Local $oExcel = _ExcelBookOpen($sFilePath1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Fehler, die während des Öffnens der Datei auftreten, anzeigen
    If @error = 1 Then
    MsgBox(0, "Fehler!", "Das Excel-Objekt konnte nicht erstellt werden.")
    Exit
    ElseIf @error = 2 Then
    MsgBox(0, "Fehler!", "Die Datei existiert nicht.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $NewFilepath = @scriptdir&"\TestsaveExcel"
    $fileformat = 57

    [/autoit] [autoit][/autoit] [autoit]

    With $oExcel
    .Application.DisplayAlerts = False ; Schaltet Fehlermeldungen bei Excel aus
    .ActiveWorkBook.SaveAs($NewFilepath, $Fileformat)
    EndWith

    [/autoit] [autoit][/autoit] [autoit]

    msgbox(0,"gespeichert",$i,1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    Die Variable $fileformat erzeugt folgende Dateitypen aus Excel:

    1 = xls
    2 = slk
    3 = txt
    6 = csv
    17 = xlt
    50 = xlsb
    51 = xlsx
    52 = xlsm
    53 = xltx
    55 = xlam
    57 = pdf
    58 = XPs
    60 = ods

  • ;-getrennte txt nach Excel importieren

    • qwert23
    • 20. November 2013 um 15:29

    Kannst Du denn die neue csv-Datei per Doppelklick mit Excel öffnen?

  • ;-getrennte txt nach Excel importieren

    • qwert23
    • 20. November 2013 um 15:20

    Probiere doch mal diesen FileCopy:

    [autoit]


    Filecopy ("c:\mytext.txt", "c:\mytext.csv",1)

    [/autoit]

    Ansonsten bleibt Dein FileCopy ohne Auswirkung auf Veränderungen in Deiner txt.

  • RFC822 für RSS-Feed

    • qwert23
    • 10. Juli 2013 um 07:02

    Meinst Du wie im Post #2 und #5 beschrieben?
    [ offen ] Anzeigeproblem mit IE

  • Explorer zweimal öffnen und je links und rechts zur Hälfte anordnen

    • qwert23
    • 29. März 2013 um 13:48

    In Deinem Script die Fenster mit WinMove positionieren...

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™