Wetten, dass das Beispiel von Deepred meiner UDF verwendet oder zumindest so ziemlich die gleichen Befehle
AllocConsole
GetConsoleWindow
WinSetState @SW_SHOW
und dann eben Read / Write.
Eingabeauffordderung
-
- [ offen ]
-
Jam00 -
31. Januar 2009 um 14:04 -
Geschlossen -
Erledigt
-
-
Ah, also kann mir vieleicht jemand ein Beispiel in einer Gui machen? Ich weiß, ich nerve, aber darus kapier ich es am besten^^
-
@progandy: Nee ich hab deine UDF nicht benutzt . 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 ****
[/autoit] [autoit][/autoit] [autoit]
#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 ----------------------------------------------------------------------------; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GuiEdit.au3>
#include <ScrollBarConstants.au3>
#include <Inet.au3>HotKeySet("{ENTER}", "command")
[/autoit] [autoit][/autoit] [autoit]DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
[/autoit] [autoit][/autoit] [autoit]$CMD = GUICreate(@ScriptFullPath, 660, 300)
[/autoit] [autoit][/autoit] [autoit]
$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)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
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc command()
[/autoit] [autoit][/autoit] [autoit]
$read = GUICtrlRead($CMDEdit)
$split = StringSplit($read, ">")$bound = UBound($split) - 1
[/autoit] [autoit][/autoit] [autoit]If $split[$bound] = "Uhrzeit" Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read & @CRLF & "Aktuelle Uhrzeit: " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF & @CRLF & @ScriptFullPath & ">")
_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)ElseIf $split[$bound] = "Info" Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read & @CRLF & "MiniCmd by DeepRed" & @CRLF & @CRLF & @ScriptFullPath & ">")
_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)ElseIf $split[$bound] = "Help" Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 & ">")_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)
[/autoit] [autoit][/autoit] [autoit]ElseIf $split[$bound] = "ip" Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read & @CRLF & "Deine IP ist: " & _GetIP() & @CRLF & @CRLF & @ScriptFullPath & ">")
_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)ElseIf $split[$bound] = "lanip" Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read & @CRLF & "Deine LAN-IP ist: " & @IPAddress1 & @CRLF & @CRLF & @ScriptFullPath & ">")
_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)ElseIf $split[$bound] = "Datum" Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read & @CRLF & "Datum: " & @MDAY & "." & @MON & "." & @YEAR & @CRLF & @CRLF & @ScriptFullPath & ">")
_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)ElseIf $split[$bound] = "Prozessliste" Then
[/autoit] [autoit][/autoit] [autoit]$read2 = GUICtrlRead($CMDEdit)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read2 & @CRLF)$list = ProcessList()
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $list[0][0]
[/autoit] [autoit][/autoit] [autoit]
$read1 = GUICtrlRead($CMDEdit)
GUICtrlSetData($CMDEdit, $read1 & @CRLF & $list[$i][0])
Next$read4 = GUICtrlRead($CMDEdit)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($CMDEdit, $read4 & @CRLF & @ScriptFullPath & ">")_GUICtrlEdit_Scroll($CMDEdit, $SB_SCROLLCARET)
[/autoit] [autoit][/autoit] [autoit]ElseIf $split[$bound] = "Exit" Then
[/autoit] [autoit][/autoit] [autoit]
ExitElse
[/autoit]
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 -
Cool, jetzt muss ich mich da mal durcharbeiten, wie kann ich denn den Pfad ändern?
-
Welchen Pfad?
-
Der da angezeigt wird, und mir ist aufgefallen, das man ja alles löschen kann
-
Zitat von Deepred
Bei meinem kann man die Wörter usw aber verändern.
@progandy: In deinem Beispielscript steht:
[autoit]#include <CMD.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
#AutoIt3Wrapper_Change2CUI=y
Global $_CMD_USEWINDOW = True_CMD_STARTUP() ; IMAPORTANT !!!!!
[/autoit][autoit][/autoit][autoit]_CMD_Write("Bitte Name eingeben: ")
[/autoit][autoit][/autoit][autoit]
$name = _CMD_READ()
MsgBox(0, '', $name)
_CMD_Write("Hallo, " & $name & @CRLF)
_CMD_PAUSE()If Not _CMD_Write("Hello World" & @CRLF) Then
[/autoit]
MsgBox(0, "Error", "WriteConsole Failed")
EndIfAber es wartet nicht bis ich etwas eingegeben habe
-
Hat jemand eine Idee wie man das ändern kann?
-
- Offizieller Beitrag
Der da angezeigt wird, und mir ist aufgefallen, das man ja alles löschen kann
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ###GUICtrlSetOnEvent ($GUI_EVENT_CLOSE,"_ENDE")
[/autoit]
While 1
Sleep(100)
WEnd
Func _ENDE()
Exit
EndFuncWarum funktionier das GuiCtrlSetOnEvent nicht?
Raupi , und wie willst du die Position rausbekommen?
-
Jam00: Weil du bei einer GUI GUISetonEvent verwenden musst und nicht GUICtrlSetOnEvent:
[autoit]#include <EditConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
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 ###GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
[/autoit][autoit][/autoit][autoit]While 1
[/autoit][autoit][/autoit][autoit]
Sleep(100)
WEndFunc _ENDE()
[/autoit]
Exit
EndFunc ;==>_ENDE -
Oki, danke
Also Deepred, ich finde deins eigentlch immernoch am Besten, wenn man doch $ES_READONLY nur auf bestimmte zeichen setzen könnte!Geht sowas vieleicht mit einer RichEdit?
-
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
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
#EndRegion ### END Koda GUI section ###
$Pfad = @CRLF & @CRLF & "C:" & @HomePath & ">"
$Zahl = 0
GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
HotKeySet ("{enter}","_CMD")
While 1
Sleep(100)
WEndFunc _ENDE()
[/autoit]
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
EndFuncEDIT: 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!
-
wenn ihr mir jetzt nich sagen könnt
können wir nicht
du hast immer so ansprüche des ist der hammerPadmak
-
- 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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
#EndRegion ### END Koda GUI section ###
$Pfad = @CRLF & @CRLF & "C:" & @HomePath & ">"
GUISetOnEvent($GUI_EVENT_CLOSE, "_ENDE")
HotKeySet ("{enter}","_CMD")
While 1
Sleep(100)
WEndFunc _ENDE()
[/autoit]
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
Bei mir kommt da 65535,-1 raus, aber das ist ja vonn schwachsinn! -
Jetzt gehst! Irgendwie hat der ein Problem damit die Position des Letzten zeiches herauszufinden!
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
#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)
WEndFunc _ENDE()
[/autoit]
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 -
- 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.
-
ja, hab ich gelesen, hab es nurnicht kapiert
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
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)
WEndFunc _ENDE()
[/autoit]
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,"")
EndFuncEdit: Upsa war ein Fehler drin!
-
- 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 ?
-