Eingabeauffordderung

  • Wetten, dass das Beispiel von Deepred meiner UDF verwendet oder zumindest so ziemlich die gleichen Befehle :D
    AllocConsole
    GetConsoleWindow
    WinSetState @SW_SHOW
    und dann eben Read / Write.

  • @progandy: Nee ich hab deine UDF nicht benutzt :D . Aber mit deiner UDF wäre es bestimmt besser.

    Jam00: Das ist eigentlich gar nicht mal so schwer sowas zu erstellen.
    Du musst eigentlich nur Eine Gui erstellen + Hotkeyset usw.
    Hier mal mein Script dazu :) :

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=App.ico
    #AutoIt3Wrapper_Res_Description=Eine kleine Befehlszeilenanwendung
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2008 - 2009 Burak Keskin
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/cs 0 /cn 0 /cf 0 /cv 1 /sf 0 /sv 0
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Icon_Add=GUI.ico
    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.0.0
    Author: Burak Keskin
    Copyright: 2008 - 2009 by Burak Keskin

    Script Function:
    Template AutoIt script.

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

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

    ; Script Start - Add your code below here

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <GuiEdit.au3>
    #include <ScrollBarConstants.au3>
    #include <Inet.au3>

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

    HotKeySet("{ENTER}", "command")

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

    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)

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

    $CMD = GUICreate(@ScriptFullPath, 660, 300)
    $CMDEdit = GUICtrlCreateEdit(@ScriptFullPath & ">", 0, 0, 662, 303, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL))
    GUICtrlSetBkColor($CMDEdit, 0x000000)
    GUICtrlSetColor($CMDEdit, 0xC0C0C0)
    GUICtrlSetFont($CMDEdit, 9, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

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

    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 7)

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

    $old = GUICtrlRead($CMDEdit)

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

    ControlClick($CMD, "", "Edit1", "left", 1,500)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func command()
    $read = GUICtrlRead($CMDEdit)
    $split = StringSplit($read, ">")

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

    $bound = UBound($split) - 1

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

    If $split[$bound] = "Uhrzeit" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & "Aktuelle Uhrzeit: " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "Info" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & "MiniCmd by DeepRed" & @CRLF & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "Help" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & "Diese Befehle stehen Ihnen zur Verfügung:" & @CRLF _
    & "Uhrzeit" & @CRLF _
    & "Info" & @CRLF _
    & "Help" & @CRLF _
    & "IP" & @CRLF _
    & "LANIP" & @CRLF _
    & "Prozessliste" & @CRLF _
    & "Exit" & @CRLF _
    & @CRLF & @ScriptFullPath & ">")

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

    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "ip" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & "Deine IP ist: " & _GetIP() & @CRLF & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "lanip" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & "Deine LAN-IP ist: " & @IPAddress1 & @CRLF & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "Datum" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & "Datum: " & @MDAY & "." & @MON & "." & @YEAR & @CRLF & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "Prozessliste" Then

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

    $read2 = GUICtrlRead($CMDEdit)
    GUICtrlSetData($CMDEdit, $read2 & @CRLF)

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

    $list = ProcessList()

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

    For $i = 1 To $list[0][0]
    $read1 = GUICtrlRead($CMDEdit)
    GUICtrlSetData($CMDEdit, $read1 & @CRLF & $list[$i][0])
    Next

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

    $read4 = GUICtrlRead($CMDEdit)
    GUICtrlSetData($CMDEdit, $read4 & @CRLF & @ScriptFullPath & ">")

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

    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)

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

    ElseIf $split[$bound] = "Exit" Then
    Exit

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

    Else
    If Not $split[$bound] = "" Then
    GUICtrlSetData($CMDEdit, $read & @CRLF & 'Der Befehl "' & $split[$bound] & '" ist entweder falsch geschrieben oder' & @CRLF _
    & "konnte nicht gefunden werden." & @CRLF & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)
    Else
    GUICtrlSetData($CMDEdit, $read & @CRLF & @ScriptFullPath & ">")
    _GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)
    EndIf
    EndIf
    EndFunc ;==>command

    [/autoit]
  • Zitat von Deepred

    Bei meinem kann man die Wörter usw aber verändern.

    @progandy: In deinem Beispielscript steht:

    [autoit]

    #include <CMD.au3>
    #AutoIt3Wrapper_Change2CUI=y
    Global $_CMD_USEWINDOW = True

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

    _CMD_STARTUP() ; IMAPORTANT !!!!!

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

    _CMD_Write("Bitte Name eingeben: ")
    $name = _CMD_READ()
    MsgBox(0, '', $name)
    _CMD_Write("Hallo, " & $name & @CRLF)
    _CMD_PAUSE()

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

    If Not _CMD_Write("Hello World" & @CRLF) Then
    MsgBox(0, "Error", "WriteConsole Failed")
    EndIf

    [/autoit]

    Aber es wartet nicht bis ich etwas eingegeben habe :(

    • Offizieller Beitrag

    Der da angezeigt wird, und mir ist aufgefallen, das man ja alles löschen kann :thumbdown:

    DU hast vielleicht Ansprüche. Nimm ein Edit zur Anzeige und für die Befehlseingabe ein Input. Kannst ja das input in der Gui rumschieben .Einfach an die aktuelle Eingabeposition verschieben. Das kannst du aber selber scripten .

  • Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    #Region ### START Koda GUI section ### Form=C:\WINDOWS\Form1.kxf
    $Form1 = GUICreate("Form1", 648, 308, 250, 203)
    GUISetIcon("C:\WINDOWS\system32\shell32.dll", 199)
    GUISetBkColor(0xFFFFFF)
    $Input1 = GUICtrlCreateInput("Input1", 102, 81, 121, 28, -1, 0)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 648, 308, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL), 0)
    GUICtrlSetData(-1, "Edit1")
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlSetOnEvent ($GUI_EVENT_CLOSE,"_ENDE")
    While 1
    Sleep(100)
    WEnd
    Func _ENDE()
    Exit
    EndFunc

    [/autoit]

    Warum funktionier das GuiCtrlSetOnEvent nicht?

    Raupi , und wie willst du die Position rausbekommen?

    mfg. Jam00

  • Jam00: Weil du bei einer GUI GUISetonEvent verwenden musst und nicht GUICtrlSetOnEvent:

    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    #Region ### START Koda GUI section ### Form=C:\WINDOWS\Form1.kxf
    $Form1 = GUICreate("Form1", 648, 308, 250, 203)
    GUISetIcon("C:\WINDOWS\system32\shell32.dll", 199)
    GUISetBkColor(0xFFFFFF)
    $Input1 = GUICtrlCreateInput("Input1", 102, 81, 121, 28, -1, 0)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 648, 308, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL), 0)
    GUICtrlSetData(-1, "Edit1")
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ENDE()
    Exit
    EndFunc ;==>_ENDE

    [/autoit]
  • Ich habe es so gemacht, wenn ihr mir jetzt nich sagen könnt wie ich die Position, des letzten Zeichen in der Edit herausfinde, bin ich zufrieden :D

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiEdit.au3>

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

    Opt("GUIOnEventMode", 1)
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    #Region ### START Koda GUI section ### Form=C:\WINDOWS\Form1.kxf
    $Form1 = GUICreate("Form1", 648, 308, 250, 203)
    GUISetIcon("C:\WINDOWS\system32\shell32.dll", 200)
    GUISetBkColor(0xFFFFFF)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 648, 308, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL), 0)
    $Pfad = "C:" & @HomePath & ">"
    GUICtrlSetData(-1,$Pfad)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Input1 = GUICtrlCreateInput("", 290, 0,341,19,0,0)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $Pfad = @CRLF & @CRLF & "C:" & @HomePath & ">"
    $Zahl = 0
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
    HotKeySet ("{enter}","_CMD")
    While 1
    Sleep(100)
    WEnd

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

    Func _ENDE()
    Exit
    EndFunc ;==>_ENDE
    Func _CMD()
    $Edit1Read = GUICtrlRead ($Edit1)
    If $Edit1Read <> "" Then
    $zEdit1Read = $Edit1Read & @CRLF
    Else
    $zEdit1Read = $Edit1Read
    EndIf
    $Befehl = GUICtrlRead ($Input1)
    $Suche = StringInStr ($Befehl,"echo",2)
    If $Suche > 0 Then
    $Zeichen = StringLen ("echo")
    $Zeichen2 = StringLen ($Befehl)
    $Ergebnis = StringRight ($Befehl,$Zeichen2 - $Zeichen - $Suche)
    If $Ergebnis <> "" Then
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,$Ergebnis & $Pfad)
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Syntax Error" & $Pfad)
    EndIf
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Dieser Befehl existiert nicht oder kann nicht Gefunden werden" & $Pfad)
    EndIf
    GUICtrlSetData ($Input1,"")
    $Zahl = $Zahl +1
    $Down = 48 * $Zahl
    If $Down < 308 Then
    GUICtrlSetPos($Input1,290,$Down)
    EndIf
    EndFunc

    [/autoit]

    EDIT: Weil so ändert der Ja nur die Position, ohne zu wissen ob die auch stimmt, wennn ich einen Mehrzeileigen text habe, ist die Position ja falsch! Und wenn der Pfad anders ist ja auch, ich nehme mal an bei euch stimmt es nicht!

    mfg. Jam00

    • Offizieller Beitrag

    Kleiner Tipp: Startposition des Edits plus (Zeilenanzahl die im Edit sind mal die Zeichenhöhe des Zeichensatzes das du verwendest ) somit bekommst du raus wo der Text in deiner Editbox endet . Eventuell mußt du noch die Abstandspixel zwischen den einzelnen Zeilen des Edits miteinbeziehn . Viel Spaß beim Rechnen ;)

    Edit die Zeilenzahl des Edit´s bekommst du damit _GUICtrlEdit_GetLineCount

    Edit2: Du kannst auch dei Zeichenzahl deines Edit´s auslesen mit _GUICtrlEdit_GetTextLen und dann mit _GUICtrlEdit_PosFromChar arbeiten . Mal sehen was du draus machst .

  • Irgendwie kommt das was falsches raus!

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiEdit.au3>

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

    Opt("GUIOnEventMode", 1)
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    #Region ### START Koda GUI section ### Form=C:\WINDOWS\Form1.kxf
    $Form1 = GUICreate("Form1", 648, 308, 250, 203)
    GUISetIcon("C:\WINDOWS\system32\shell32.dll", 200)
    GUISetBkColor(0xFFFFFF)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 648, 308, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL), 0)
    $Pfad = "C:" & @HomePath & ">"
    GUICtrlSetData(-1,$Pfad)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Input1 = GUICtrlCreateInput("", 290, 0,341,19,0,0)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $Pfad = @CRLF & @CRLF & "C:" & @HomePath & ">"
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
    HotKeySet ("{enter}","_CMD")
    While 1
    Sleep(100)
    WEnd

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

    Func _ENDE()
    Exit
    EndFunc ;==>_ENDE
    Func _CMD()
    $Edit1Read = GUICtrlRead ($Edit1)
    If $Edit1Read <> "" Then
    $zEdit1Read = $Edit1Read & @CRLF
    Else
    $zEdit1Read = $Edit1Read
    EndIf
    $Befehl = GUICtrlRead ($Input1)
    $Suche = StringInStr ($Befehl,"echo",2)
    If $Suche > 0 Then
    $Zeichen = StringLen ("echo")
    $Zeichen2 = StringLen ($Befehl)
    $Ergebnis = StringRight ($Befehl,$Zeichen2 - $Zeichen - $Suche)
    If $Ergebnis <> "" Then
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,$Ergebnis & $Pfad)
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Syntax Error" & $Pfad)
    EndIf
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Dieser Befehl existiert nicht oder kann nicht Gefunden werden" & $Pfad)
    EndIf
    GUICtrlSetData ($Input1,"")
    $Zeichen3 = _GUICtrlEdit_GetTextLen($Edit1)
    $Down = _GUICtrlEdit_PosFromChar($Edit1, $Zeichen3)
    ToolTip ($Down[0] & "," & $Down[1] & "," & $Zeichen3)
    If $Down[0] < 308 Then
    GUICtrlSetPos($Input1,$Down[0],$Down[1])
    EndIf
    EndFunc

    [/autoit]


    Bei mir kommt da 65535,-1 raus, aber das ist ja vonn schwachsinn!

    mfg. Jam00

  • Jetzt gehst! Irgendwie hat der ein Problem damit die Position des Letzten zeiches herauszufinden!

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiEdit.au3>

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

    Opt("GUIOnEventMode", 1)
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    #Region ### START Koda GUI section ### Form=C:\WINDOWS\Form1.kxf
    $Form1 = GUICreate("Form1", 648, 308, 250, 203)
    GUISetIcon("C:\WINDOWS\system32\shell32.dll", 200)
    GUISetBkColor(0xFFFFFF)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 648, 308, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL), 0)
    $Pfad = "C:" & @HomePath & ">"
    GUICtrlSetData(-1,$Pfad)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Input1 = GUICtrlCreateInput("", 290, 0,341,19,0,0)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $Pfad = @CRLF & @CRLF & "C:" & @HomePath & ">"
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
    HotKeySet ("{enter}","_CMD")
    While 1
    $Zeichen3 = _GUICtrlEdit_GetTextLen($Edit1)
    $Down = _GUICtrlEdit_PosFromChar($Edit1, $Zeichen3 -1)
    $Pos = ControlGetPos ($Form1,"",$Input1)
    If $Pos[0] <> $Down[0] And $Pos[1] <> $Down[1] Then
    GUICtrlSetPos($Input1,$Down[0]+8,$Down[1])
    EndIf
    Sleep(100)
    WEnd

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

    Func _ENDE()
    Exit
    EndFunc ;==>_ENDE
    Func _CMD()
    $Edit1Read = GUICtrlRead ($Edit1)
    If $Edit1Read <> "" Then
    $zEdit1Read = $Edit1Read & @CRLF
    Else
    $zEdit1Read = $Edit1Read
    EndIf
    $Befehl = GUICtrlRead ($Input1)
    $Suche = StringInStr ($Befehl,"echo",2)
    If $Suche > 0 Then
    $Zeichen = StringLen ("echo")
    $Zeichen2 = StringLen ($Befehl)
    $Ergebnis = StringRight ($Befehl,$Zeichen2 - $Zeichen - $Suche)
    If $Ergebnis <> "" Then
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,$Ergebnis & $Pfad)
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Syntax Error" & $Pfad)
    EndIf
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Dieser Befehl existiert nicht oder kann nicht Gefunden werden" & $Pfad)
    EndIf
    GUICtrlSetData ($Input1,"")
    EndFunc

    [/autoit]

    mfg. Jam00

    • Offizieller Beitrag

    Wenn du die mal die Hilfe von _GUICtrlEdit_PosFromChar durchgelesen hättest, wüßtest du das der Befehl ein 0 basierendes Index beutzt. Wenn du also 100 Zeichen hast dann wäre das 0 basierend 99. :D

  • ja, hab ich gelesen, hab es nurnicht kapiert :thumbdown:

    Oki, also er gibt mir immer die Anfagsposition aus, nich die Endposition! Ich hab mal ein Update, aber es gehen noch nicht alle Befehle!

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiEdit.au3>

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

    Opt("GUIOnEventMode", 1)
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
    #Region ### START Koda GUI section ### Form=C:\WINDOWS\Form1.kxf
    $Form1 = GUICreate("Form1", 648, 308, 250, 203)
    GUISetIcon("C:\WINDOWS\system32\shell32.dll", 200)
    GUISetBkColor(0xFFFFFF)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 648, 308, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL), 0)
    $Pfad = "C:" & @HomePath & ">"
    GUICtrlSetData(-1,$Pfad)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Input1 = GUICtrlCreateInput("", 290, 0,341,19,0,0)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Button = GUICtrlCreateButton ("OK",0,0)
    GUICtrlSetState (-1,$GUI_HIDE)
    Dim $Form1_AccelTable[1][2] = [["{ENTER}", $Button]]
    GUISetAccelerators($Form1_AccelTable)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $Pfad = @CRLF & @CRLF & "C:" & @HomePath & ">"
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
    GUICtrlSetOnEvent ($Button,"_CMD")
    $Befehle = "echo|ipconfig|dir|cd|Help"
    $BefehleB = "Gibt einen Text zurück|zeigt die IP an|zeigt alle Dateinen und Ortner im aktuellen Pfad an|Wechselt das verzeichniss|Zeigt diese Hilfe an"
    $sBefehle = StringSplit ($Befehle,"|")
    $sBefehleB = StringSplit ($BefehleB,"|")
    While 1
    $Zeichen3 = _GUICtrlEdit_GetTextLen($Edit1)
    $Down = _GUICtrlEdit_PosFromChar($Edit1, $Zeichen3 -1)
    $Pos = ControlGetPos ($Form1,"",$Input1)
    If $Pos[0] <> $Down[0] And $Pos[1] <> $Down[1] Then
    GUICtrlSetPos($Input1,$Down[0]+8,$Down[1])
    EndIf
    Sleep(100)
    WEnd

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

    Func _ENDE()
    Exit
    EndFunc ;==>_ENDE
    Func _CMD()
    $Fund = False
    $Befehl = GUICtrlRead ($Input1)
    If IsArray ($sBefehle) Then
    For $1 = 1 To $sBefehle[0]
    $Suche = StringInStr ($Befehl,$sBefehle[$1],2)
    If $Suche > 0 Then
    If $sBefehle[$1] = "echo" Then
    $Zeichen = StringLen ($sBefehle[$1])
    $Zeichen2 = StringLen ($Befehl)
    $Ergebnis = StringRight ($Befehl,$Zeichen2 - $Zeichen - $Suche)
    If $Ergebnis <> "" Then
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,$Ergebnis & $Pfad)
    Else
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Syntax Error" & @CRLF & "echo [text]" & $Pfad)
    EndIf
    $Fund = True
    ElseIf $sBefehle[$1] = "Help" Then
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    If $sBefehle[0] = $sBefehleB[0] Then
    For $2 = 1 To $sBefehle[0]
    _GUICtrlEdit_AppendText($Edit1,@CRLF & $sBefehle[$2] & @TAB & $sBefehleB[$2])
    Next
    _GUICtrlEdit_AppendText($Edit1,$Pfad)
    Else
    _GUICtrlEdit_AppendText($Edit1,"Programm hat Datenfehler")
    _GUICtrlEdit_AppendText($Edit1,$Pfad)
    EndIf
    $Fund = True
    EndIf
    EndIf
    Next
    EndIf
    If $Fund = False Then
    _GUICtrlEdit_AppendText($Edit1,$Befehl & @CRLF)
    _GUICtrlEdit_AppendText($Edit1,"Dieser Befehl existiert nicht oder kann nicht Gefunden werden" & $Pfad)
    EndIf
    GUICtrlSetData ($Input1,"")
    EndFunc

    [/autoit]

    Edit: Upsa war ein Fehler drin!

    mfg. Jam00

    • Offizieller Beitrag

    Was ist daran so schwer ? Ist wie bei einem Array wenn du das Array Definierst dann zum Beispiel DIm $Array[10] wenn du dem Array werte zuweist ist das erste Element 0 .Das letze ist 9 und nicht 10 weil bei 0 abgefangen wird. Genauso ist das bei _GUICtrlEdit_PosFromChar das 1. Zeichen ist an Position 0 und nicht bei 1. Was meinst du mit Endposition ?