Hallo ihr lieben,
ich habe da eine Frage. Mir wurde dieses kleine Tool programmiert mit dem ich auf dem Desktop was einlesen kann und mir die Antwort geben lassen kann.
Z.B. "SMS" wird makiert und ich bekomme die Antwort "SMS ist eine Nachrichtenform der heutigen Jugend" ( Als Beispiel ).
Nun habe ich versucht das ganze weiterzuentwickeln bzw. die Ausgabe also die Antwort zu erweitern das ich mehr Platz für eine Antwort habe. Im moment wird mir nämlich leider nach ein paar Zeilen die Antwort wie abgeschnitten. Und ich meine Fähigkeiten reichen leider nicht so ganz aus um herauszufinden wie ich das ändern könnte.
Über eine Hilfestellung oder Korrektur wäre ich mehr als dankbar.
Hier mal der Code.
Spoiler anzeigen
#include <Array.au3>
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
#include <misc.au3>
#NoTrayIcon
If FileExists("ok.txt") = 0 Then
[/autoit] [autoit][/autoit] [autoit]If @ComputerName = "NB06NR15" Then
MsgBox(16, "...", ":P")
Exit
EndIf
If @ComputerName = "NB06NR09" Then
MsgBox(16, "...", ":P")
Exit
EndIf
EndIf
[/autoit] [autoit][/autoit] [autoit]Global $Gui = GUICreate("", @DesktopWidth, @DesktopWidth, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]FileDelete("data.dat")
[/autoit] [autoit][/autoit] [autoit]Dim $liste = 1
Dim $ldata, $l, $qtimer, $data, $disloes
Dim $La
Dim $win = True
Dim $Rea = 1
HotKeySet("{esc}", "boss")
[/autoit] [autoit][/autoit] [autoit]If FileExists("l.txt") = 0 Then
;Lösungen fehlen
While 1
winrefresh("File")
sleep(1000)
winrefresh("- ? -")
sleep(1000)
WEnd
EndIf
HotKeySet("{up}", "listup")
HotKeySet("{down}", "listdown")
HotKeySet("{left}", "readwin")
HotKeySet("{right}", "showhide2")
HotKeySet("^{left}", "qSuch")
HotKeySet("^{right}", "showhide2")
$DLL = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]while 1
If _IsPressed(02, $DLL) Then
showhide()
Do
sleep(1)
Until _IsPressed(02, $DLL) = 0
EndIf
sleep(10)
WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func qSuch()
Send("^c")
Sleep(50)
$clip = clipget()
$array = stringsplit(FileRead("l.txt"), ";")
;Array durchsuchen
$timer = 0
while 1
ConsoleWrite($Timer & "- ")
if stringinstr($array[$timer], $clip) then
If StringInStr($timer / 2, ".") Then
;Frage
$tmptime = $timer + 1
winrefresh($Array[$tmptime])
ConsoleWrite("Frage: " & $Array[$tmptime] & @CRLF)
Else
;Antwort
$tmptime = $timer
winrefresh($Array[$tmptime])
ConsoleWrite("Antwort: " & $Array[$tmptime] & @CRLF)
EndIf
exitloop
endif
$timer = $timer +1
[/autoit] [autoit][/autoit] [autoit]if $timer > $array[0] then exitloop
wend
ConsoleWrite("Ende" & @crlf)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]endfunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func listup()
;Liste hoch
$liste = $liste + 1
$ldata = IniRead("data.dat", "L", $liste, "?")
winrefresh($liste & ":" & $ldata)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func listdown()
;Liste hoch
$liste = $liste - 1
If $liste <= 0 Then
$liste = 1
EndIf
$ldata = IniRead("data.dat", "L", $liste, "?")
[/autoit] [autoit][/autoit] [autoit]winrefresh($liste & ":" & $ldata)
EndFunc
Func showhide()
GUICtrlDelete($l)
;GUIDelete($Gui)
EndFunc
Func showhide2()
GUICtrlDelete($l)
GUIDelete($Gui)
sleep(50)
Global $Gui = GUICreate("", @DesktopWidth, @DesktopWidth, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)
EndFunc
Func winrefresh($text)
GUICtrlDelete($l)
;GUIDelete($Gui)
;Text im Fenster aktualisieren
$MC = MouseGetPos()
$MBK = PixelGetColor($MC[0],$MC[1])
$MT = "0xCCCCCC"
GUISetBkColor($MBK)
[/autoit] [autoit][/autoit] [autoit]If StringLen($text) > 100 Then
Global $l = GUICtrlCreateLabel($text,$MC[0] + 10,$MC[1],StringLen($text)/2 * 5,32, "",$WS_EX_TRANSPARENT)
Else
Global $l = GUICtrlCreateLabel($text,$MC[0] + 10,$MC[1],StringLen($text) * 5,16, "",$WS_EX_TRANSPARENT)
EndIf
GUICtrlSetFont($l, 7)
GUICtrlSetBkColor($l, $MBK)
GUICtrlSetColor($l, $MT)
GUISetControlsVisible($Gui)
GUISetState()
EndFunc
Func boss()
FileDelete("data.dat")
Exit
EndFunc
Func readwin()
FileDelete("data.dat")
Send("^a")
sleep(100)
Send("^c")
sleep(50)
$Data = ClipGet()
Send("{NUMLOCK OFF}")
FileWrite("H:/ci.txt", $data & @crlf & @CRLF & @CRLF)
[/autoit] [autoit][/autoit] [autoit]Calc($Data)
Send("{NUMLOCK ON}")
EndFunc
Func precalc($I)
;Wenn das Assestment wie B gelesen wird!
Dim $losdata
;Input nach Zeilen Teilen.
$I = StringSplit($I, @crlf)
;Header abschneiden damit wir direkt beim Content sind.
$timer = 1
while 1
;If StringTrimLeft($I[$timer],1) = " " Or StringTrimLeft($I[$timer],2) = " " Then
If IsIntTyp(StringReplace(StringLeft($I[$timer],2), " ", "")) Then
;Zeilen löschen!
$timer = $timer -1
$I[0] = String(Int($I[0] - $timer))
While 1
_ArrayDelete($I, $timer)
If $timer = 1 Then ExitLoop
$timer = $timer -1
WEnd
ExitLoop
EndIf
;EndIf
$timer = $timer + 1
If $timer > Int($I[0]) Then
SetError(1)
Return(-1)
EndIf
WEnd
;Leerzeilen entfernen
$timer = 1
while 1
If $I[$timer] = "" Or $I[$timer] = " " Then
$I[0] = String(Int($I[0]) - 1)
_ArrayDelete($I, $timer)
Else
$timer = $timer +1
EndIf
If $timer > $I[0] Then
ExitLoop
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Nummern umlegen
$timer = 1
while 1
If IsIntTyp(StringReplace(StringLeft($I[$timer],2), " ", "")) Then
$Nr = StringReplace(StringLeft($I[$timer],2), " ", "")
$Frage = StringTrimLeft($I[$timer],2)
$I[$timer] = $Nr & " "
$timer = $timer + 1
$I[0] = String(Int($I[0]) + 1)
_ArrayInsert($I, $timer, $Frage)
Else
$I[$timer] = " " & StringTrimRight($I[$timer],1)
EndIf
$timer = $timer + 1
[/autoit] [autoit][/autoit] [autoit]If $timer > $I[0] Then
ExitLoop
EndIf
WEnd
Calc(1, $I)
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func Calc($I, $A = -1)
If $A = -1 Then
Dim $losdata
;Input nach Zeilen Teilen.
$I = StringSplit($I, @crlf)
;Header abschneiden damit wir direkt beim Content sind.
$timer = 1
while 1
;If StringTrimLeft($I[$timer],1) = " " Or StringTrimLeft($I[$timer],2) = " " Then
If IsIntTyp($I[$timer]) Then
;Zeilen löschen!
$timer = $timer -1
$I[0] = String(Int($I[0] - $timer))
While 1
_ArrayDelete($I, $timer)
If $timer = 1 Then ExitLoop
$timer = $timer -1
WEnd
ExitLoop
EndIf
;EndIf
$timer = $timer + 1
If $timer > Int($I[0]) Then
SetError(1)
Return(-1)
EndIf
WEnd
;Leerzeilen entfernen
$timer = 1
while 1
If $I[$timer] = "" Or $I[$timer] = " " Then
$I[0] = String(Int($I[0]) - 1)
_ArrayDelete($I, $timer)
Else
$timer = $timer +1
EndIf
If $timer > $I[0] Then
ExitLoop
EndIf
WEnd
Else
$I = $A
EndIf
;Lösungen einlesen
$L = FileRead("l.txt")
$L = StringSplit($L, ";")
;Fragen mit Lösungen vergleichen
$ATimer = 1
$FTimer = 1
while 1
If $atimer > $I[0] Then
SetError(1)
ExitLoop
EndIf
ConsoleWrite("............................" & @crlf & "I = " & $atimer & "/" & $I[0] & @CRLF & "Value: " & $I[$atimer] & @CRLF)
$Nummer = StringReplace($I[$atimer], " ", "")
;Arrayschritt mit Overflowschutz
$atimer = $atimer + 1
If $atimer > $I[0] Then
SetError(1)
ExitLoop
EndIf
$Frage = $I[$atimer]
[/autoit] [autoit][/autoit] [autoit];Arrayschritt mit Overflowschutz
$atimer = $atimer + 1
If $atimer > $I[0] Then
SetError(1)
ExitLoop
EndIf
;Frage in den Lösungen suchen
$ltimer = 1
while 1
If StringInStr($Frage, $L[$ltimer]) Then
ExitLoop
EndIf
$ltimer = $ltimer + 1
[/autoit] [autoit][/autoit] [autoit]If $ltimer > $L[0] Then
[/autoit] [autoit][/autoit] [autoit]$ltimer = -1
ExitLoop
EndIf
WEnd
;Frage gefunden?
If $ltimer = -1 Then
;Frage nicht gefunden
IniWrite("data.dat", "L", $Nummer, "-")
Else
;Frage gefunden
;~ ToolTip("Frage gefunden!" & @crlf & @CRLF & "Gesuchte Frage: |" & $Frage & "|" & @CRLF & "Gefundene Frage: |" & $L[$ltimer] & "|" & @CRLF & "Bei: " & $ltimer,0,0)
;~ _ArrayDisplay($L)
;Antworten abgleichen
$ltimer = $ltimer + 1 ;LTIMER auf Lösungen setzen
$awtimer = 1
$lstring = ""
while 1
ConsoleWrite("AW-Timer; " & $awtimer & @CRLF)
[/autoit] [autoit][/autoit] [autoit];Antwort vergleichen
If StringLeft($I[$atimer], 1) = " " Then
;Ist eine Antwort
ConsoleWrite("=> " & "|" & $L[$ltimer] & "|" & Stringreplace($I[$atimer], " ", "") & "|" & @CRLF)
If Stringinstr($L[$ltimer], Stringreplace($I[$atimer], " ", "")) Then
;Antwort ist drin. In Lösungsstring aufnehmen.
$lstring &= $awtimer & "-"
EndIf
Else
;Keine Antwort
ExitLoop
EndIf
$awtimer = $awtimer + 1
[/autoit] [autoit][/autoit] [autoit];Arrayschritt mit Overflowschutz
$atimer = $atimer + 1
If $atimer > $I[0] Then
SetError(1)
ExitLoop
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit]IniWrite("data.dat", "L", $Nummer, StringTrimRight($lstring,1))
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];~ ;Fragen mit Lösungen vergleichen und Antwortzahlen erstellen
;~ $timer = 1
;~ $atimer = 1
;~ while 1
;~ $Nummer = $I[$Timer]
;~ $Nummer = StringReplace($Nummer, " ", "")
;~ $timer = $timer + 1
;~ ;Overflowschutz
;~ If $timer > $I[0] Then
;~ SetError(1)
;~ ExitLoop
;~ EndIf
;~ $Frage = $I[$timer]
;~ $timer = $timer + 1
;~ ;Overflowschutz
;~ If $timer > $I[0] Then
;~ SetError(1)
;~ ExitLoop
;~ EndIf
;~ ;Die Frage in den Lösungen suchen
;~ $ltimer = 1
;~ while 1
;~ If StringInStr($Los[$ltimer], $Frage) Then
;~ ExitLoop
;~ EndIf
;~ $ltimer = $ltimer + 1
[/autoit] [autoit][/autoit] [autoit];~ If $ltimer > $Los[0] Then
;~ $ltimer = "error" ;FRAGE NICHT GEFUNDEN!
;~ ExitLoop
;~ EndIf
;~ WEnd
;~ ;MsgBox(16,"A", "A")
;~ If $ltimer = "error" Then
;~ ;Frage nicht gefunden!
;~ Else
;~ ;Antworten raussuchen und vergleichen
;~ ;LTIMER ist auf Frage. +1 für die Antworten.
;~ $ltimer = $ltimer +1
;~ $atimer = 1
;~ $losdata = $Nummer & ": "
;~ while 1
;~ If StringRight($I[$timer],1) = " " Then
;~ ;Ist eine neue Nummer.
;~ ExitLoop
;~ EndIf
;~ If StringInStr($Los[$ltimer],Stringreplace($I[$timer], " ", "")) Then
;~ ;Antwort ist drin
;~ $losdata &= $atimer & "-"
;~ EndIf
;~ $atimer = $atimer +1
;~ $timer = $timer + 1
;~ If $timer > $I[0] Then
;~ ExitLoop
;~ EndIf
;~ WEnd
;~ ;MsgBox(16,"B", "B")
;~ EndIf
;~ IniWrite("l.dat", "L", $atimer, StringTrimRight($losdata,1))
[/autoit] [autoit][/autoit] [autoit];~ $atimer = $atimer + 1
[/autoit] [autoit][/autoit] [autoit];~ ;Overflowschutz
;~ If $timer > $I[0] Then
;~ SetError(1)
;~ ExitLoop
;~ EndIf
;@error
;1 - Allgemeiner Fehler!
EndFunc
Func IsIntTyp($d)
$d = StringReplace($d, " ","")
If $d = "1" Then
Return(1)
ElseIf $d = "2" Then
Return(1)
ElseIf $d = "3" Then
Return(1)
ElseIf $d = "4" Then
Return(1)
ElseIf $d = "5" Then
Return(1)
ElseIf $d = "6" Then
Return(1)
ElseIf $d = "7" Then
Return(1)
ElseIf $d = "8" Then
Return(1)
ElseIf $d = "9" Then
Return(1)
ElseIf $d = "10" Then
Return(1)
ElseIf $d = "11" Then
Return(1)
ElseIf $d = "12" Then
Return(1)
ElseIf $d = "13" Then
Return(1)
ElseIf $d = "14" Then
Return(1)
ElseIf $d = "15" Then
Return(1)
ElseIf $d = "16" Then
Return(1)
ElseIf $d = "17" Then
Return(1)
ElseIf $d = "18" Then
Return(1)
ElseIf $d = "19" Then
Return(1)
ElseIf $d = "20" Then
Return(1)
ElseIf $d = "21" Then
Return(1)
ElseIf $d = "22" Then
Return(1)
ElseIf $d = "23" Then
Return(1)
ElseIf $d = "24" Then
Return(1)
ElseIf $d = "25" Then
Return(1)
ElseIf $d = "26" Then
Return(1)
ElseIf $d = "27" Then
Return(1)
ElseIf $d = "28" Then
Return(1)
ElseIf $d = "29" Then
Return(1)
ElseIf $d = "30" Then
Return(1)
ElseIf $d = "31" Then
Return(1)
ElseIf $d = "32" Then
Return(1)
ElseIf $d = "33" Then
Return(1)
ElseIf $d = "34" Then
Return(1)
ElseIf $d = "35" Then
Return(1)
ElseIf $d = "36" Then
Return(1)
ElseIf $d = "37" Then
Return(1)
ElseIf $d = "38" Then
Return(1)
ElseIf $d = "39" Then
Return(1)
ElseIf $d = "40" Then
Return(1)
ElseIf $d = "41" Then
Return(1)
ElseIf $d = "42" Then
Return(1)
ElseIf $d = "43" Then
Return(1)
ElseIf $d = "44" Then
Return(1)
ElseIf $d = "45" Then
Return(1)
ElseIf $d = "46" Then
Return(1)
ElseIf $d = "47" Then
Return(1)
ElseIf $d = "48" Then
Return(1)
ElseIf $d = "49" Then
Return(1)
ElseIf $d = "50" Then
Return(1)
ElseIf $d = "51" Then
Return(1)
ElseIf $d = "52" Then
Return(1)
ElseIf $d = "53" Then
Return(1)
ElseIf $d = "54" Then
Return(1)
ElseIf $d = "55" Then
Return(1)
ElseIf $d = "56" Then
Return(1)
ElseIf $d = "57" Then
Return(1)
ElseIf $d = "58" Then
Return(1)
ElseIf $d = "59" Then
Return(1)
ElseIf $d = "60" Then
Return(1)
ElseIf $d = "61" Then
Return(1)
ElseIf $d = "62" Then
Return(1)
ElseIf $d = "63" Then
Return(1)
ElseIf $d = "64" Then
Return(1)
ElseIf $d = "65" Then
Return(1)
ElseIf $d = "66" Then
Return(1)
ElseIf $d = "67" Then
Return(1)
ElseIf $d = "68" Then
Return(1)
ElseIf $d = "69" Then
Return(1)
ElseIf $d = "70" Then
Return(1)
ElseIf $d = "71" Then
Return(1)
ElseIf $d = "72" Then
Return(1)
ElseIf $d = "73" Then
Return(1)
ElseIf $d = "74" Then
Return(1)
ElseIf $d = "75" Then
Return(1)
ElseIf $d = "76" Then
Return(1)
ElseIf $d = "77" Then
Return(1)
ElseIf $d = "78" Then
Return(1)
ElseIf $d = "79" Then
Return(1)
ElseIf $d = "80" Then
Return(1)
ElseIf $d = "81" Then
Return(1)
ElseIf $d = "82" Then
Return(1)
ElseIf $d = "83" Then
Return(1)
ElseIf $d = "84" Then
Return(1)
ElseIf $d = "85" Then
Return(1)
ElseIf $d = "86" Then
Return(1)
ElseIf $d = "87" Then
Return(1)
ElseIf $d = "88" Then
Return(1)
ElseIf $d = "89" Then
Return(1)
ElseIf $d = "90" Then
Return(1)
ElseIf $d = "91" Then
Return(1)
ElseIf $d = "92" Then
Return(1)
ElseIf $d = "93" Then
Return(1)
ElseIf $d = "94" Then
Return(1)
ElseIf $d = "95" Then
Return(1)
ElseIf $d = "96" Then
Return(1)
ElseIf $d = "97" Then
Return(1)
ElseIf $d = "98" Then
Return(1)
ElseIf $d = "99" Then
Return(1)
ElseIf $d = "100" Then
Return(1)
Else
Return(0)
EndIf
EndFunc
Func showGUI($text)
$MC = MouseGetPos()
$MBK = PixelGetColor($MC[0],$MC[1])
$MT = "0xCCCCCC"
GUISetBkColor($MBK)
[/autoit] [autoit][/autoit] [autoit]If StringLen($text) > 100 Then
Global $l = GUICtrlCreateLabel($text,$MC[0] + 10,$MC[1],StringLen($text)/2 * 5,32, "",$WS_EX_TRANSPARENT)
Else
Global $l = GUICtrlCreateLabel($text,$MC[0] + 10,$MC[1],StringLen($text) * 5,16, "",$WS_EX_TRANSPARENT)
EndIf
GUICtrlSetFont($l, 7)
GUICtrlSetBkColor($l, $MBK)
GUICtrlSetColor($l, $MT)
GUISetControlsVisible($Gui)
GUISetState()
EndFunc
Func GUISetControlsVisible($hWnd)
Local $aClassList, $aM_Mask, $aCtrlPos, $aMask
$aClassList = StringSplit(_WinGetClassListEx($hWnd), @LF)
$aM_Mask = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", 0, "long", 0)
For $i = 1 To UBound($aClassList) - 1
$aCtrlPos = ControlGetPos($hWnd, '', $aClassList[$i])
If Not IsArray($aCtrlPos) Then ContinueLoop
$aMask = DllCall("gdi32.dll", "long", "CreateRectRgn", _
"long", $aCtrlPos[0], _
"long", $aCtrlPos[1], _
"long", $aCtrlPos[0] + $aCtrlPos[2], _
"long", $aCtrlPos[1] + $aCtrlPos[3])
DllCall("gdi32.dll", "long", "CombineRgn", "long", $aM_Mask[0], "long", $aMask[0], "long", $aM_Mask[0], "int", 2)
Next
DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $hWnd, "long", $aM_Mask[0], "int", 1)
EndFunc
Func _WinGetClassListEx($sTitle)
Local $sClassList = WinGetClassList($sTitle)
Local $aClassList = StringSplit($sClassList, @LF)
Local $sRetClassList = "", $sHold_List = "|"
Local $aiInHold, $iInHold
For $i = 1 To UBound($aClassList) - 1
If $aClassList[$i] = "" Then ContinueLoop
If StringRegExp($sHold_List, "\|" & $aClassList[$i] & "~(\d+)\|") Then
$aiInHold = StringRegExp($sHold_List, ".*\|" & $aClassList[$i] & "~(\d+)\|.*", 1)
$iInHold = Number($aiInHold[UBound($aiInHold)-1])
If $iInHold = 0 Then $iInHold += 1
[/autoit] [autoit][/autoit] [autoit]$aClassList[$i] &= "~" & $iInHold + 1
$sHold_List &= $aClassList[$i] & "|"
$sRetClassList &= $aClassList[$i] & @LF
Else
$aClassList[$i] &= "~1"
$sHold_List &= $aClassList[$i] & "|"
$sRetClassList &= $aClassList[$i] & @LF
EndIf
Next
Return StringReplace(StringStripWS($sRetClassList, 3), "~", "")
EndFunc
Grüße und Dank
Fusel232