Konsoleprogramme einbinden

  • Moin,

    ich möchte für ein Kommandozeilen-Programm eine GUI erstellen.

    Wie muss ich nun das Kommandozeilen-Programm ansprechen..., also mit Befehlen, Optionen usw. ?

    Muss ich mit @ComSpec arbeiten ?

    Wenn ich z.B. Run("upx.exe"," -d " & $Pfad) benutze, passiert nichts... :irre:


    Gruß


  • Du hast auch bei Run zwischen upx.exe und -d ein Komma. Dann geht es klar nicht

  • peethebee

    Hab's mit ShellExecute versucht => Datei/Pfad konnte nicht gefunden werden oder existiert nicht !

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $maingui = "WinUPX - The Ultimate Packer for eXecutables"
    GUICreate( $maingui, 600, 400, -1, -1)

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

    Global $defaultstatus = "Ready"
    Global $status

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

    $filemenu = GUICtrlCreateMenu ("&Datei")
    $fileitem = GUICtrlCreateMenuitem ("Öffnen",$filemenu)
    GUICtrlSetState(-1,$GUI_DEFBUTTON)
    $helpmenu = GUICtrlCreateMenu ("?")
    $saveitem = GUICtrlCreateMenuitem ("Speichern",$filemenu)
    GUICtrlSetState(-1,$GUI_DISABLE)
    $infoitem = GUICtrlCreateMenuitem ("Info",$helpmenu)
    $exititem = GUICtrlCreateMenuitem ("Beenden",$filemenu)
    $recentfilesmenu = GUICtrlCreateMenu ("Zuletzt",$filemenu,1)

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

    $separator1 = GUICtrlCreateMenuitem ("",$filemenu,2) ; create a separator line

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

    $viewmenu = GUICtrlCreateMenu("Ansicht",-1,1) ; is created before "?" menu
    $viewstatusitem = GUICtrlCreateMenuitem ("Statusbar",$viewmenu)
    GUICtrlSetState(-1,$GUI_CHECKED)
    $okbutton = GUICtrlCreateButton ("OK",50,130,70,20)
    GUICtrlSetState(-1,$GUI_FOCUS)
    $cancelbutton = GUICtrlCreateButton ("Abbrechen",180,130,70,20)

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

    $statuslabel = GUICtrlCreateLabel ($defaultstatus,0,364,600,16,BitOr($SS_SIMPLE,$SS_SUNKEN))

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

    $checkCN = GUICtrlCreateCheckbox ("CHECKBOX 1", 10, 10, 120, 20)
    $Input = GUICtrlCreateInput ("", 10, 35, 300, 20)
    $decompress = GUICtrlCreateRadio ("Datei entpacken", 10, 70)
    $compress = GUICtrlCreateRadio ("Datei packen", 10, 100)
    $browse = GUICtrlCreateButton ("Durchsuchen...", 340, 35, 90, 20)

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

    GUISetState ()
    While 1
    $msg = GUIGetMsg()

    Select
    Case $msg = $browse
    $file = FileOpenDialog("Datei auswählen...",@MyDocumentsDir,"Executables (*.exe)")
    $datei = FileGetShortName($file)
    MsgBox(0, "TT", $datei)
    $tmp = FileOpen("Temp.txt", 2)
    FileWrite($tmp, $datei)
    FileChangeDir($tmp)
    Case $msg = $fileitem
    $file = FileOpenDialog("Datei auswählen...",@DesktopCommonDir,"Executables (*.exe)")
    Case $msg = $viewstatusitem
    If BitAnd(GUICtrlRead($viewstatusitem),$GUI_CHECKED) = $GUI_CHECKED Then
    GUICtrlSetState($viewstatusitem,$GUI_UNCHECKED)
    GUICtrlSetState($statuslabel,$GUI_HIDE)
    Else
    GUICtrlSetState($viewstatusitem,$GUI_CHECKED)
    GUICtrlSetState($statuslabel,$GUI_SHOW)
    EndIf
    Case $msg = $decompress
    $option = "-d"
    Case $msg = $okbutton
    $Exec = ShellExecute ("upx.exe ", "-d " & $datei)
    If $Exec <> 1 Then MsgBox(4096, "error", "error")
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $cancelbutton Or $msg = $exititem
    ExitLoop
    Case $msg = $infoitem
    Msgbox(64,"Info","Nur ein Test...")
    EndSelect
    WEnd
    GUIDelete()

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

    Exit

    [/autoit]


    Einmal editiert, zuletzt von Greenhorn (7. Februar 2007 um 21:18)

  • Hi,

    mit /c führst du die Befehle wie dir, copy, del usw. aus (Konsolenbefehle).

    Versuch es z.B. mal damit:
    Runwait(@ComSpec & " /c " & 'dir c:\ & pause', "", @SW_MAXIMIZE)

    Viel Erfolg beim Programmieren,
    Milko

    Einmal editiert, zuletzt von milko (7. Februar 2007 um 22:28)

  • Hmmm,

    irgendwas mache ich falsch ! :irre:


    Code:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.2.0
    Author: myName

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

    Script Function:
    WinShorten a GUI for Shorten

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

    #ce ----------------------------------------------------------------------------

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

    #include <GuiConstants.au3>
    #include <GUIList.au3>

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

    Dim $Array

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

    GuiCreate("WinShorten", 634, 419,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    $Group_1 = GuiCtrlCreateGroup("Dateien auswählen", 20, 30, 580, 270)
    $Add = GuiCtrlCreateButton("Hinzufügen", 490, 70, 90, 30)
    GUICtrlSetState(-1, $GUI_FOCUS)
    $Del = GuiCtrlCreateButton("Entfernen", 490, 140, 90, 30)
    $List = GuiCtrlCreateList("", 60, 60, 370, 214)
    $Group_2 = GuiCtrlCreateGroup("", 20, 310, 180, 100)
    $Compress = GuiCtrlCreateRadio("Komprimieren", 30, 330, 100, 20)
    $Extract = GuiCtrlCreateRadio("Extrahieren", 30, 370, 100, 20)
    $Start = GuiCtrlCreateButton("Start", 500, 320, 100, 30)
    $Cancel = GuiCtrlCreateButton("Abbrechen", 500, 370, 100, 30)

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

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $Add
    $message = "Hold down Ctrl or Shift to choose multiple files."
    $var = FileOpenDialog($message, @DesktopDir & "\", "(*.wav)", 1 + 4 )
    If @error Then
    MsgBox(4096,"","No .wav File(s) chosen")
    Else
    $Array = StringSplit($var, "|")
    For $i = 2 To UBound($Array)-1
    $File = $Array[$i]
    GUICtrlSetData($List, $File)
    Next
    EndIf
    Case $msg = $Del
    $chosen = _GUICtrlListSelectedIndex($List)
    _GUICtrlListDeleteItem($List, $chosen)
    Case $msg = $Compress
    $c = ""
    Case $msg = $Extract
    $c = "-x "
    Case $msg = $Start
    $tmp = $Array[1]
    $Path = StringRegExpReplace($tmp, "\\", "/")
    For $i = 2 To UBound($Array)-1
    ;ShellExecuteWait("shorten.exe ", $c & $Path & "/" & $Array[$i])
    ;RunWait("shorten.exe " & $c & $Path & "/" & $Array[$i])
    ;RunWait(@ComSpec & " /c " & "shorten " & $c & $Path & "/" & $Array[$i], "", @SW_MAXIMIZE)
    Next
    Case $msg = $Cancel
    ExitLoop
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd
    Exit

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

    Syntax:

    Spoiler anzeigen

    Case 1
    ======

    If you are shortening files in the current directory, you can simply issue a
    command similar to this:

    C:\> shorten track01.wav


    Case 2
    ======

    Now suppose your .wav's are in a different directory than the current directory
    you are in, but they are on the same drive (drive C: for instance). Then you
    can specify where they are in one of two ways.

    1. Example using a relative path to get to them:

    C:\> shorten ../disc2/track01.wav

    2. Example using an absolute path to get to them:

    C:\> shorten c:/other/directory/track01.wav

    or:

    C:\> shorten /cygdrive/c/other/directory/track01.wav


    Case 3
    ======


    Finally, suppose the .shn's you want to extract are on a completely different
    drive. Then you need to specify the drive letter, as well as the path to the
    files, similar to the following:

    C:\> shorten -x d:/directory/on/this/drive/track01.shn

    or:

    C:\> shorten -x /cygdrive/d/directory/on/this/drive/track01.shn


    You can easily avoid having to remember to do any of this, however, if you
    always change to the desired directory before running shorten. Taking the
    example from Case 3, this is how you would go about doing this:

    C:\> d:
    D:\> cd directory\on\this\drive
    D:\directory\on\this\drive> shorten -x track01.shn

    Note that you use forward slashes as a pathname separator *only* when invoking
    shorten, not when you are issuing normal DOS commands.


    :help: :weinen:


    Wäre für nochmalige Hilfestellung dankbar !


    • Offizieller Beitrag

    Schilder doch bitte, was der Code machen soll und was passiert. Macht es für Hilfesteller wesentlich einfacher...

    peethebee

    Edit: Bin jetzt 3 Stunden offline - freie Fahrt für BugFix und th.meger ;)

  • peethebee & th.meger

    shorten ist ein Kommandozeilentool um .wav Dateien verlustfrei in .shn Dateien zu komprimieren.

    Dafür möchte ich nun gern eine GUI erstellen. :rofl:

    Wenn ich jetzt einen der Befehle (die im Code mit ";" ) ausführe, dann sehe ich nur das Konsolenfenster aufblitzen..., so oft wie die Schleife eben durchläuft, aber es passiert nichts !

    Die shorten.exe befindet sich in meiner Script Directory und nicht im WINDOWS Ordner !!

    Würde ich jetzt eine *.cmd schreiben mit den entsprechenden Befehlen ( "shorten Track 01.wav", bzw. "shorten -x Track 01.shn" ) und würde die .cmd & die shorten. exe in den Ordner kopieren in dem die AudioFiles (".wav", bzw. ".shn", dann fuktionuckelt es.

    Aber wie gesagt, ich möchte nun ein GUI Programm erstellen, welches mir die Arbeit eine *.cmd zu schreiben erspart. ;)

    Bei WinUHA funzt es ja schließlich auch, und das ist ja eigentlich das gleiche Prinzip !


    Einmal editiert, zuletzt von Greenhorn (11. Februar 2007 um 16:01)

  • Da kannst Du schon Recht haben, aber wenn ich keine WorkingDir angebe wird doch der Pfad genommen in dem mein Script sich befindet und dort habe ich ja auch die shorten.exe...

    Shorten installiert sich nicht, es ist ein reines Kommandozeilentool, genauso wie UHARC.

    Man kann die shorten.exe z.B. in den WINDOWS Ordner kopieren und dann mit der Konsole ausführen, oder man schreibt eine Batch mit den Kommandos und kopiert dann die Batch.cmd/bat & shorten.exe in den Ordner mit den *.wav Dateien und führt dann die Batch aus.


    Install.txt

    Spoiler anzeigen


    shorten for DOS/Windows
    -----------------------

    shorten has been built for DOS/Windows using the Cygwin toolkit, available at
    <http://sources.redhat.com/cygwin/>.


    ------------
    Installation
    ------------

    To install shorten, first extract the files contained in the distribution .zip
    file to a temporary directory, and copy shorten.exe and cygwin1.dll to a
    directory that is in your PATH. To find out what directories are in your PATH,
    go to the DOS prompt and type:

    C:\> echo %PATH%

    Any of the listed directories will do, but perhaps the best choice is one of the
    Windows directories, e.g. C:\Windows, C:\Windows\Command, C:\Windows\System,
    C:\WinNT, C:\WinNT\System32, et cetera. Of course, yours may be different than
    these, and there may be more than one Windows directory listed.

    To make sure shorten working correctly, go to the DOS prompt and type:

    C:\> shorten -h

    You should see shorten's version information (verify that it shows the correct
    version - if not, then you probably have an outdated copy of shorten.exe
    somewhere on your hard drive that you need to remove). If you don't see the
    version information, or if you get a message saying that the command was not
    found, then shorten is not installed correctly.


    ------
    Quirks
    ------

    Due to the way Cygwin works, there are certain times when file names need to be
    specified in a way different from the normal DOS syntax. Essentially, the
    differences are that (a) you use forward slashes instead of backslashes, and (b)
    if you want to access files on a different drive than the one you are currently
    on, you use can either use "d:", or if that doesn't work, "/cygdrive/d", where "d"
    is the drive you want to access.


    Case 1
    ======

    If you are shortening files in the current directory, you can simply issue a
    command similar to this:

    C:\> shorten track01.wav


    Case 2
    ======

    Now suppose your .wav's are in a different directory than the current directory
    you are in, but they are on the same drive (drive C: for instance). Then you
    can specify where they are in one of two ways.

    1. Example using a relative path to get to them:

    C:\> shorten ../disc2/track01.wav

    2. Example using an absolute path to get to them:

    C:\> shorten c:/other/directory/track01.wav

    or:

    C:\> shorten /cygdrive/c/other/directory/track01.wav


    Case 3
    ======


    Finally, suppose the .shn's you want to extract are on a completely different
    drive. Then you need to specify the drive letter, as well as the path to the
    files, similar to the following:

    C:\> shorten -x d:/directory/on/this/drive/track01.shn

    or:

    C:\> shorten -x /cygdrive/d/directory/on/this/drive/track01.shn


    You can easily avoid having to remember to do any of this, however, if you
    always change to the desired directory before running shorten. Taking the
    example from Case 3, this is how you would go about doing this:

    C:\> d:
    D:\> cd directory\on\this\drive
    D:\directory\on\this\drive> shorten -x track01.shn

    Note that you use forward slashes as a pathname separator *only* when invoking
    shorten, not when you are issuing normal DOS commands.


    Gruß


    Einmal editiert, zuletzt von Greenhorn (11. Februar 2007 um 18:04)

    • Offizieller Beitrag

    Ja, die Installanleitung geht ja mit meinen Gedanken konform, da als Installationsverzeichnis(se) (bzw. Kopierverzeichnis :) ) die Windowsordner bzw. Systemordner empfohlen werden, also Verzeichnisse auf die ein Path-Befehl gesetzt ist.
    Demzufolge setze einen Pfad auf das "shorten"-Verzeichnis oder wechsle vor Ausführung in diesen Ordner.

    EDIT:
    Ich saug mir mal das Tool und teste selber. Bis später.

    • Offizieller Beitrag

    Also hier mein Fazit.
    Hätte nicht geglaubt, dass es so etwas gibt. Aber shorten kann definitiv NICHT mit Run(), RunWait(), ShellExecute() oder ShellExecuteWait() geöffnet werden. Selbst wenn ich im selben Verzeichnis bin, wird die Datei über diese Befehle nicht gefunden. (*wunder-mich*)
    Dann hab ich einen Umweg versucht und die Befehle in eine Batchdatei geschrieben und versucht diese über Run zu starten - mit demselben (Miss)Erfolg.
    Auf Consolenebene überhaupt kein Problem.
    Keine Ahnung warum das so ist.

    Tut mir leid, dassich da nicht weiterhelfen kann.

  • BugFix

    Probiere mal den hier...

    [autoit]

    RunWait(@ComSpec & " /k " & "shorten " & $c & $Path & "/" & $Array[$i], "", @SW_MAXIMIZE)

    [/autoit]

    :klatschen:

    So, habe es endlich geschafft...
    Ist zwar nichts dolles, aber es funktioniert ! :stolz_bin:

    Ein paar Schönhetsarbeiten kann man ja noch vornehmen... ;)

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.2.0
    Author: Greenhorn

    Script Function:
    WinShorten a GUI for Shorten

    #ce ----------------------------------------------------------------------------

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

    #NoTrayIcon
    #include <GuiConstants.au3>
    #include <GUIList.au3>
    #include <Array.au3>

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

    Dim $Array, $Target, $File, $c

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

    FileInstall("shorten.exe", @SystemDir & "\shorten.exe", 1)
    FileInstall("cygwin1.dll", @SystemDir & "\cygwin1.dll", 1)
    GUICreate("WinShorten", 640, 420, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    $Group_1 = GUICtrlCreateGroup(" Dateien ", 20, 30, 580, 270)
    $Add = GUICtrlCreateButton("Hinzufügen", 490, 70, 90, 30)
    GUICtrlSetState(-1, $GUI_FOCUS)
    $Del = GUICtrlCreateButton("Entfernen", 490, 140, 90, 30)
    $List = GUICtrlCreateList("", 60, 60, 370, 214)
    $Group_2 = GUICtrlCreateGroup(" Optionen ", 20, 310, 180, 100)
    $Compress = GUICtrlCreateRadio("Komprimieren", 30, 330, 100, 20)
    $Extract = GUICtrlCreateRadio("Extrahieren", 30, 370, 100, 20)
    $Start = GUICtrlCreateButton("Start", 500, 320, 100, 30)
    $Exit = GUICtrlCreateButton("Beenden", 500, 370, 100, 30)

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

    GUISetState()
    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $Add
    File_Add()
    Case $msg = $Del
    $chosen = _GUICtrlListSelectedIndex($List)
    _GUICtrlListDeleteItem($List, $chosen)
    Case $msg = $Compress
    $c = ""
    Case $msg = $Extract
    $c = "-x "
    Case $msg = $Start
    Convert()
    CmdClose()
    Case $msg = $Exit
    CmdClose()
    Exit
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE
    Exit

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

    ; File Add

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

    Func File_Add()
    $message = "Hold down Ctrl or Shift to choose multiple files."
    $var = FileOpenDialog($message, @DesktopDir & "\", "(*.wav)|(*.shn)", 1 + 4)
    $Array = StringSplit($var, "|")
    If $Array[0] = 1 Then
    $ArFile = StringSplit($Array[1], "\")
    $i = $ArFile[0]
    GUICtrlSetData($List, $ArFile[$i])
    If StringInStr($var, ".wav") <> 0 Then
    GUICtrlSetState($Compress, $GUI_CHECKED)
    GUICtrlSetState($Extract, $GUI_DISABLE)
    ElseIf StringInStr($var, ".shn") <> 0 Then
    GUICtrlSetState($Extract, $GUI_CHECKED)
    GUICtrlSetState($Compress, $GUI_DISABLE)
    $c= "-x "
    EndIf
    EndIf
    For $i = 2 To UBound($Array) - 1
    $File = $Array[$i]
    GUICtrlSetData($List, $File)
    If StringInStr($File, ".wav") <> 0 Then
    GUICtrlSetState($Compress, $GUI_CHECKED)
    GUICtrlSetState($Extract, $GUI_DISABLE)
    ElseIf StringInStr($File, ".shn") <> 0 Then
    GUICtrlSetState($Extract, $GUI_CHECKED)
    GUICtrlSetState($Compress, $GUI_DISABLE)
    $c= "-x "
    EndIf
    Next
    EndFunc ;==>File_Add

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

    ; Convert

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

    Func Convert()
    #include <GuiConstants.au3>

    Unchecked()
    No_Space()
    GUICreate("Fortschritt", 392, 136, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

    $Progress = GUICtrlCreateProgress(20, 30, 350, 20)
    $Label = GUICtrlCreateLabel("", 20, 70, 350, 20)
    $percent = (100/ (UBound($Array) - 2))
    If $c = "" Then
    $Act = "komprimiert"
    Else
    $Act = "extrahiert"
    EndIf

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

    GUISetState()
    GUICtrlSetData($Label, "Dateien werden " & $Act & "...")
    $tmp = $Array[1]
    $Path = StringRegExpReplace($tmp, "\\", "/")
    If $Array[0] = 1 Then
    Run(@ComSpec & " /k " & "shorten " & $c & $Path, "", @SW_HIDE)
    GUICtrlSetData($Progress, 100)
    Sleep(100)
    EndIf
    For $i = 2 To UBound($Array) - 1
    Run(@ComSpec & " /k " & "shorten " & $c & $Path & "/" & $Array[$i], "", @SW_HIDE)
    GUICtrlSetData($Progress, ($i * $percent))
    Sleep(100)
    Next
    MsgBox(64, "Fertig", "Dateien wurden erfolgreich " & $Act)
    WinKill("Fortschritt")
    EndFunc ;==>Convert

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

    ; CmdClose

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

    Func CmdClose()
    Do
    $PID = ProcessExists("cmd.exe")
    If $PID Then ProcessClose($PID)
    Until $PID = 0
    EndFunc ;==>CmdClose

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

    ; Unchecked

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

    Func Unchecked()
    $Un = GUICtrlGetState($Extract)
    $Unx = GUICtrlGetState($Compress)
    $UnList = _GUICtrlListCount($List)
    Select
    Case $Un = $GUI_UNCHECKED
    MsgBox(4096, "Error", "Bitte Option wählen!")
    Case $Unx = $GUI_UNCHECKED
    MsgBox(4096, "Error", "Bitte Option wählen!")
    Case $UnList = 0
    MsgBox(4096, "Error", "Es wurden keine Dateien ausgewählt!")
    EndSelect
    EndFunc ;==>Unchecked

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

    ; No Space

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

    Func No_Space()

    If $Array[0] = 1 Then
    $ArFile = StringSplit($Array[1], "\")
    $i = $ArFile[0]
    $Title = StringRegExp($ArFile[$i], "[ ]", 1)
    If @extended Then
    $Target = StringRegExpReplace($ArFile[$i], "[ ]", "")
    _ArrayPop($ArFile)
    FileMove($ArFile & "\" & $Title, $ArFile[1] & "\" & $Target)
    EndIf
    EndIf
    For $i = 2 To $Array[0]
    $ArStr = $Array[$i]
    $Target = StringRegExp($ArStr, "[ ]", 1)
    If @extended Then
    $Target = StringRegExpReplace($ArStr, "[ ]", "")
    FileMove($Array[1] & "\" & $Array[$i], $Array[1] & "\" & $Target)
    EndIf
    Next
    EndFunc ;==>No_Space

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


    Vielen Dank nocheinmal an euch alle !

    Gruß


    9 Mal editiert, zuletzt von Greenhorn (17. Februar 2007 um 20:19)