Wieso das Rad immer wieder neu erfinden?
AutoIt und 3D:
OpenGL: http://www.autoitscript.com/forum/index.php?s=ffb2a350408385870fc482edce3a26de&showtopic=83581&view=findpost&p=597903
D3D: http://www.autoitscript.com/forum/index.php?showtopic=109185&view=findpost&p=768398
Beiträge von Andy
-
-
Hi, habe für die Paletten meines Apfelmännchens eine Funktion geschrieben, welche die jeweiligen Zwischenfarben im Farbverlauf berechnet.
Im Array stehen die Farben, die Funktion gibt je nach Größe des Farbverlaufs die passende Zwischenfarbe aus.Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <Color.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Dim $hcol[16]
;-----------------------------------------------
$hGUI = GUICreate("Form1", 169, 600, 557, 78)
GUISetOnEvent(-3, "death")
;---------
$Button1 = GUICtrlCreateButton("LOS", 88, 8, 75, 25, $WS_GROUP)
GUICtrlSetOnEvent($Button1, "load")
;---------
GUISetState(@SW_SHOW)
;-----------------------------------------------
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI);Palette für den Farbverlauf RRGGBB
[/autoit] [autoit][/autoit] [autoit]
;
$hcol[0] = (0x000000);Schwarz
$hcol[1] = (0x404040);Grau
$hcol[2] = (0xFF0000);Rot
$hcol[3] = (0xFF6A00);Orange
$hcol[4] = (0xFFD800);Gelb
$hcol[5] = (0xB6FF00);Gelbgrün
$hcol[6] = (0x4CFF00);Grün
$hcol[7] = (0x00FF21);Grün2
$hcol[8] = (0x00FF90);GrünBlau
$hcol[9] = (0x00FFFF);HellBlau
$hcol[10] = (0x0094FF);Blau
$hcol[11] = (0x0026FF);DunkelBlau
$hcol[12] = (0x4800FF);Violett
$hcol[13] = (0xB200FF);Pink
$hcol[14] = (0xFF00DC);Rosa
$hcol[15] = (0xFF006E);BlauRot;_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;hier suboptimal.....
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc death()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>deathFunc load()
[/autoit] [autoit][/autoit] [autoit]
$max = 500 ;beliebig
For $i = 0 To $max
$col = _createcolorfrompalette($hcol, $i, $max)
$brush = _GDIPlus_BrushCreateSolid($col+0xFF000000)
_GDIPlus_GraphicsFillRect($hGraphic, 1, $i, 50, 1, $brush)
_GDIPlus_BrushDispose($brush)
Next
EndFunc ;==>loadFunc _createcolorfrompalette(ByRef $aPalette, $count, $maximum) ;gibt zwischenfarbe anhand der beiden Nachbarn im Palette-array zurück
[/autoit] [autoit][/autoit] [autoit]
Local $ubound = UBound($aPalette) - 1 ;maximale Anzahl Palettenfarben
Local $percent = $count * $ubound / $maximum ;Position innerhalb des Palettenarrays
$index = Int($percent) ;index des Palettenarrays "unterhalb" von percent
If $percent = $index Then Return $aPalette[$index] ;bei genauem indextreffer farbe zurückgeben$startrot = _ColorGetRed($aPalette[$index]) ;startfarbe
[/autoit] [autoit][/autoit] [autoit]
$startgruen = _ColorGetGreen($aPalette[$index])
$startblau = _ColorGetBlue($aPalette[$index])
$endrot = _ColorGetRed($aPalette[$index + 1]) ;endfarbe
$endgruen = _ColorGetGreen($aPalette[$index + 1])
$endblau = _ColorGetBlue($aPalette[$index + 1])$xx = (($percent - $index)) ;faktor zwischen 0 und 1
[/autoit] [autoit][/autoit] [autoit]$r = Int($startrot - ($startrot - $endrot) * $xx) * 256 * 256 ;zwischenrot
[/autoit]
$g = Int($startgruen - ($startgruen - $endgruen) * $xx) * 256 ;zwischengruen
$b = Int($startblau - ($startblau - $endblau) * $xx) ;zwischenblau
Return $r + $g + $b
EndFunc ;==>_createcolorfrompalette
So kann man dann einfach eine Farbpalette erstellen. -
Beispiel für eine Anzeige nur nach Änderung.
Damit könnte man auch täglich die Zeit mit einem Zeitserver synchronisieren...Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("Uhrzeit", 200, 200, 600, 200)
[/autoit] [autoit][/autoit] [autoit]
$Zeit = GUICtrlCreateLabel("", 40, 50, 100, 17) ;muß nicht vorbelegt seinGUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
$oldsec = ""While 1
[/autoit] [autoit][/autoit] [autoit]
If $oldsec <> @SEC Then ;Zeit wird nur aktualisiert, wenn @sec sich verändert hat
GUICtrlSetData($Zeit, @HOUR & " : " & @MIN & " : " & @SEC)
$oldsec = @SEC
EndIf$msg = GUIGetMsg()
[/autoit]
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd@tuttifrutti,
[autoit]
wieso updatest du nicht alle 1000ms sondern alle 100ms?
Weiterhin ist die "Date.au3" sicherlich nützlich, aber eine 129kb-UDF einzubinden um im Quellcode 12 Bytes zu sparen?
Außerdem macht _NowTime() nichts anderes als...Func _NowTime($sType = 3)
[/autoit]
If $sType < 3 Or $sType > 5 Then $sType = 3
Return (_DateTimeFormat(@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC, $sType))
EndFunc ;==>_NowTime
d.h. je nach Systemzeiteinstellung werden die Sekunden "weggebügelt"! Und es sind nur HH:MM sichtbar....suboptimal! -
[autoit]
while Msgbox(0, "Uhrzeit", @Hour&" : "&@Min&" : "&@SEC,1)<>1 ;Msgbox wird jede Sekunde aktualisiert, so lange bis OK gedrückt wird
[/autoit]
wendsry, aber der musste jetzt sein :o)
-
Zitat
Oder könnte ich sonst hier und in dem Titel die
Buschstaben schreiben? xDJa natürlich könntest du, ich schreib ja auch in einem Programm mit der koreanischen Tastatur und im andern mit der deutschen und im dritten mit der englischen. Windows wechselt je nach im Programm eingestellter Tasta automatisch. Da kannst du Scite installieren sooft du willst, das ist davon unabhängig. Das Programm wird vom BS mit dem Tastaturschema verknüpft, welches aktiviert wurde, macht ja auch Sinn.
D.h. wenn du in Scite mit Shift+Alt auf eine andere Tasta umgeschaltet hast, dann bleibt das so lange, bis du wieder zurücksschaltest. Bei mir ist das jedenfalls so...../EDIT/ UTF-8.....omfg^^
-
Ja, es soll nicht der Eindruck aufkommen, daß AutoIt nur als Wrapper für einen (schnelleren/anderen) Code benutzt werden kann. Weil genau das nicht der Sinn eines µ-It ist, habe ich ja auch meine (Asm)-Varianten ausgeklammert.
Vielleicht sollte man sich darauf einigen, daß keine anderen externen Funktionscalls als die in den mit der aktuellen AutoIt-Version mitgelieferten UDF´s verwendet werden sollten. (umpft, was ein Satz....)"Native" gefällt mir einerseits gut, aber in meinem Beispiel aus #126 ist auch alles "native"^^. Aber ich denke, wir verstehen uns...
Der Ärger fängt ja schon damit an, daß die "getunten" Scripte nicht unter 64 Bit usw laufen.Die Richtung ist klar, fehlt nur noch eine Idee fürs nächste µ-It, aber da steckt mir schon was in der Nase....
-
Bist du sicher, nicht mit Shift+Alt zwischen den alternativen (englischen usw) Tastaturen umgeschaltet zu haben? Google mal nach "Eingabegebietsschemaleiste"
Ich habe neben der deutschen und englischen auch die koreanische Tastatur zeitweise in Benutzung, bei versehentlichem Umschalten auf Koreanisch funktionieren dann logischerweise auch die Scite-Befehle in "Extras" nicht mehr....Alt+d macht dann keine neue Zeile mit der Debug-Console sondern öffnet das Datei-Menü... -
Zitat
leider wird dieses Skript nicht bewertet, da es auf Nicht-Standard-Includes zugreifft (FASM.au3):
Naja, UEZ braucht die FASM.au3 ja nur zum "umwandeln" des Assemblercodes in den Bytecode. Das ist für das Script eigentlich völlig unwichtig. Genauso könnte man die WINAPI-Calls, aus denen sämtliche "hellblauen" AutoIt-Befehle (und auch die "dunkelblauen") größtenteils bestehen, verbieten. Die machen NICHTS anderes! Allerdings würde dann AutoIt natürlich nicht mehr funktionieren....Problem erkannt? JEDE Software wird im Endeffekt vom Prozessor ausgeführt.Wenn UEZ den Bytecode in den Speicher schreibt ($bytecode=String(FasmGetBinary($Fasm)) und diesen dann aufruft, benutzt er garkeine Includes....s. Beispiel
Spoiler anzeigen
[autoit];Liste der Primzahlen bis $maximum
[/autoit] [autoit][/autoit] [autoit]
;32-Bit Bytecode by Andy, eine der ersten Versionen, daher unoptimiert und "langsam"Local $maximum = 1299709 ;Obergrenze der Primzahlen
[/autoit] [autoit][/autoit] [autoit]
Local $file = "Prim_" & $maximum & ".au3" ;Datei, in welche die Primzahlen geschrieben werden$t = TimerInit() ;Timestamp sichern
[/autoit] [autoit][/autoit] [autoit]
$tStruct = DllStructCreate("uint Limit;uint Limes;char Mem[" & $maximum + 10 & "]") ;char, dann kann man nachher schön mit den stringfunktionen suchen
;die folgenden 4 Zeilen sparen einige Zeilen Assemblercode, außerdem kann man sich den Speicherinhalt in AutoIt anschauen
DllStructSetData($tStruct, "Mem", "001") ;die ersten 3 Zahlen setzen, 0=0 1=0 2=1 , 2 ist die erste Primzahl
DllStructSetData($tStruct, "Limit", $maximum);limit in die Struct schreiben
DllStructSetData($tStruct, "Limes", Floor(Sqrt($maximum)) + 1);wurzel aus limit in die struct schreiben
$bytecode = "0x558B6C24088B5D00B803000000C74405083130313083C00439D876F189EF83C70889FE8B4D00BB0300000089D8F7E0C604063001D839C87CF683C3023B5D007737803C1E3175F2535189D8BB0A00000031C931D2F7F3665280C10109C075F366580C30AAE2F9C6070D83C701595B3B5D047CB83B5D007CC1C607005DC3"
$tCodeBuffer = DllStructCreate("byte[" & StringLen($bytecode) / 2 & "]") ;Speicher für den bytecode reservieren...
DllStructSetData($tCodeBuffer, 1, $bytecode);...und mit dem Bytecode beschreiben
;die folgende Zeile startet den bytecode im Speicher und kehrt danach hierher zurück
$a = DllCall("user32.dll", "int", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "ptr", DllStructGetPtr($tStruct), "int", 0, "int", 0, "int", 0);bytecode aufrufen, rückgabe in a[0]$primzahlen = "2" & @CR & "3" & @CR & DllStructGetData($tStruct, "Mem");2 und 3 sind die ersten Primzahlen, dann folgt der Rest
[/autoit] [autoit][/autoit] [autoit]
$m = TimerDiff($t) ;Zeit seit ProgrammstartFileDelete($file) ;Primzahldatei löschen
[/autoit] [autoit][/autoit] [autoit]
FileWrite($file, $primzahlen) ;Ausgabe der Primzahlen in Datei
$m1 = TimerDiff($t);Zeit seit Programmstart incl Datei schreibenStringReplace($primzahlen, @CR, @CR, 0, 1) ;alle CR im String zählen.....auch AutoIt hat SPEEEEED^^
[/autoit] [autoit][/autoit] [autoit]
$anzahlprim = @extended ;hätte man auch vom Assembler zurückgeben lassen können^^MsgBox(262144, "Primzahlen bis " & $maximum, $anzahlprim & " Primzahlen ermittelt in " & Int($m) & " Millisekunden" & @CRLF & _
[/autoit]
"Primzahlen ermitteln und in Datei schreiben in " & Int($m1) & " Millisekunden." & @CRLF & _
"Ausgabe der Zahlen folgt in die Datei " & $file & @CRLF & _
"Die Primzahldatei wird nun angezeigt...")
ShellExecute($file) ;in Scite anzeigen
Wäre der Abräumer bzgl Geschwindigkeit und Kompaktheit des Codes....oder war verboten, Prozessormnemonics zu verwenden? -
Habe während des Studiums an einem Projekt teilgenommen, in dem über 2 Semester in jeder Woche 2-4h "IQ-Tests" gemacht wurden. Also insgesamt ca 80-100h reine Testzeit. Da kam schon einiges zusammen. Das interessante daran war, daß Bereiche abgefragt/abgetestet wurden die ich nie und nimmer mit Intelligenz in Verbindung gebracht hätte.
Die abschließende Auswertung dauerte 2-3h und beinhaltete bei jedem ein persönliches Gespräch. Sehr interessant. Würde ich jedem mal empfehlen, besonders "hochbegabten". Aber nicht dumm gucken, wenn man trotz guter Schulnoten nur einen mittelmäßigen IQ hat. Das eine hat mit dem anderen nichts zu tun, einer meiner Kommilitonen (ein Arschlochkind seit Geburt) ist damals mit Papis Anwalt angerückt, da er mit dem (nicht öffentlichen) Ergebnis wohl keinesfalls einverstanden war^^. Was natürlich zu noch größerem Interesse und nachträglichem Durchsickern einiger Ergebnisse führte. Dumm gelaufen fürs Arschlochkind...wenn man eine große Fresse hat ("..ich bin hochbegabt!") , sollte man nicht unbedingt einen unterdurchschnittlichen IQ nachgewiesen bekommen....Jodie Foster hat einen IQ von >150....und für die anderen gilt:"NO BRAIN, NO PAIN!"

-
Zitat von i2c
Da wär mir das Geld bissle schade für. Langfristig gesehen ist das eher eine Fehlinvestition.
langfristig gesehen ist jede Investition in Computerhardware eine Fehlinvestition^^. Den Kram, den du heute beim Händler kaufst, kostet morgen 20% weniger oder ist fürs gleiche Geld doppelt so schnell.
Kommt einfach drauf an, was man machen will. Hab hier im Netz noch einen 1,2Ghz-P3-Celeron. Zum Surfen, für Büroarbeiten und gelegentliches Zocken war der vor ca. 10 Jahren schon gut und ist heute kein Stück schlechter.Und ich bezweifle, daß jemand mit einem 20fach schnelleren Rechner einen Brief/Angebot/Auftragsbestätigung auch nur 5% schneller erstellt. Ne schöne Glotze hab ich dem Arbeitsplatz gegönnt, das packt die alte Graka (schon DVI) noch sehr locker. Ergonomie>>Rechnergeschwindigkeit... -
Hi,
fürs erste Script sehr schön, weiter so!Schau mal in Scite im Menü "Extras" nach Tidy (ctrl+t), das formatiert dir deinen Quellcode. Übrigens sind dort noch mehr Tools (Debugging+Trace), welche dir sicher weiterhelfen. Würden diese vorhandenen Funktionen dort genutzt, hätten wir im Forum sicher nur noch 10% der "XXXX funktioniert nicht"-Postings.
Da du sichtlich Wert auf eine Struktur legst, schau dir mal Arrays an. Gerade wenn du vorhast Scripte wie z.B. den Taschenrechner zu erweitern, vereinfachen Arrays doch einiges. Damit kannst du z.B. die Positionen der Buttons im Scriptkopf definieren und das Aussehen der GUI einfacher anpassen bzw später leichter erweitern.Den "Speicher" könntest du auch als Array oder ggf auch als listview/listbox ausführen, wie hast du dir das Handling vorgestellt?
-
Dtex,
ggf wäre es sinnvoll, wenn du mal umschreiben würdest um was es überhaupt geht, bzw. was du erreichen willst.
Einen Thread zu starten in dem es um Arrays geht (die man im vorliegenden Fall nichtmal braucht) um dann dem Tip für eine Listview hinterherzulaufen und nach 38 Postingss dann festzustellen es wäre mit einer anderen Lösung viel einfacher zu realisieren gewesen, ist m.E. suboptimal....
Problem bzw. Ziel beschreiben und dafür Lösungen abfragen ist erstens wesentlich schneller und zweitens vergrault es keine Helfer, die sich nicht gern doppelt und dreifach Arbeit machen. -
Hi, eigentlich brauchst du keine Arrays^^
Habe sie dennoch eingebaut, schau mal, ob du damit was anfangen kannstSpoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $dkp[10] ;10 label, eigentlich sind die arrays in diesem beispiel unnötig...
Dim $input[10]
Dim $buttonplus[10]
Dim $buttonminus[10]$gui = GUICreate("Buttonarray")
[/autoit] [autoit][/autoit] [autoit]
For $zeile = 0 To 9 ;10 Zeilen füllen
$dkp[$zeile] = GUICtrlCreateLabel("275", 115, 20 + 30 * $zeile, 35, 15)
$input[$zeile] = GUICtrlCreateInput($zeile, 160, 18 + 30 * $zeile, 40, 19) ;dem array die ID des inputcontrols übergeben
$buttonplus[$zeile] = GUICtrlCreateButton("+", 210, 18 + 30 * $zeile, 30, 19)
$buttonminus[$zeile] = GUICtrlCreateButton("-", 250, 18 + 30 * $zeile, 30, 19)
Next
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
$string = ""
For $i = 0 To 9 ;inhalte der inputs ausgeben
$string &= "Input Zeile " & $i & " hat den Wert " & GUICtrlRead($input[$i]) & @CRLF ;aus dem array die ID des inputcontrols auslesen
Next
MsgBox(0, "Dialog wurde beendet", $string)
Exit
Case $GUI_EVENT_MINIMIZE
MsgBox(0, "", "Dialog wurde minimiert", 2)
Case $GUI_EVENT_MAXIMIZE
MsgBox(0, "", "Dialog wurde wiederhergestellt", 2)Case $buttonplus[0] To $buttonminus[9] ;alle plus- und minus-buttons abfragen
[/autoit]
$gedruecktezeile = Int(($msg / 4) - 1) ;zeile ermitteln (eigentlich unnötig)
If Mod($msg - 1, 4) = 0 Then ;plus wurde gedrückt
MsgBox(0, "PLUS-Button gedrückt", "in Zeile " & $gedruecktezeile & @CRLF & "Zahl im input wird um 1 erhöht!", 2)
GUICtrlSetData($msg - 1, Number(GUICtrlRead($msg - 1)) + 1) ;wert im input eins erhöhen
Else ;minus wurde gedrückt
MsgBox(0, "MINUS-Button gedrückt", "in Zeile " & $gedruecktezeile & @CRLF & "Zahl im input wird um 1 erniedrigt!", 2)
GUICtrlSetData($msg - 2, Number(GUICtrlRead($msg - 2)) - 1) ;wert im input 1 erniedrigen
EndIf
EndSwitch
WEnd/edit/ Schnitzel, du benötigst die Arrays in deinem Script genausowenig wie ich die in meinem...^^
Bsp: [ gelöst ] Automatische Variablennamen -
wenn ich mich nicht verzählt habe, dann ist 100000000000000000000000000=10^26
Wenn das Array nur 1 Byte pro Eintrag hätte, wären das 100x10^12 1-Terabyte Festplatten....
Mal angenommen, eine Festplatte ist 1cm hoch, dann wäre der Stapel 10^9 Kilometer hoch...bis zur Sonne sind es 150x10^6km....da müsste man schon einige Stapel nebeneinander stellen.10^26 ist ungefähr auch die Anzahl der Atome im jugendlichen menschlichen Körper....ungefähr^^
Wer brauch ein Array dieser Größe? -
guckt euch diesen Link an, [ offen ] Reload aus der Config. , und ihr wisst, woher der Wind weht....
Leider hat er das ursprüngliche Script gelöscht, die Lacher hat aber Raupi zitiert^^ -
Niemand hat geschrieben, daß du WM_POPUP benutzen MUSST!
[autoit]
Eine der 1000 Möglichkeiten...#include <WindowsConstants.au3>
[/autoit][autoit][/autoit][autoit]
$maingui=guicreate("MainGui verschieben")
guisetstate()
$childgui=guicreate("ChildGui folgt dem MainGui",200,200,default,default,$DS_MODALFRAME+$DS_SETFOREGROUND,-1,$maingui)
guisetstate()Do
[/autoit]
if WinExists($childgui) then
$pos=WinGetPos($maingui)
winmove($childgui,"",$pos[0]+100,$pos[1]+100)
endif
until guigetmsg()=-3
[autoit]
oder#include <WindowsConstants.au3>
[/autoit][autoit][/autoit][autoit]
$maingui=guicreate("MainGui verschieben")
guisetstate()
$childgui=guicreate("ChildGui folgt dem MainGui",200,200,default,default,$DS_MODALFRAME+$DS_SETFOREGROUND,$WS_EX_MDICHILD,$maingui)
guisetstate()Do
[/autoit]
until guigetmsg()=-3/EDIT/ kann mir mal jemand verständlich erklären, warum in der Vorschau meines Antwortpostings neuerdings die inzwischen geposteten Antworten nicht erscheinen? Dann bräuchte ich meine nämlich nicht abzuschicken...
-
Wenn man bei Textdateien nicht weiß wie der Zeilenumbruch genau aussieht, einfach den Text in Scite laden und im Menü Ansicht das Zeilenende (Ctrl+Shift+F9) sichtbar machen. Das funktioniert übrigens auch bei unbekannten "Leerzeichen" also z.B. Tabulatoren oder anderen.
Btw: [ offen ] Leerzeilen in einer *.txt Datei löschen
-
Zitat
Die Version von BugFix ist aber schneller
ja, ähnlich wie die Stringfunktionen und Regexp. Für die Vorteile von Bequemlichkeit und Flexilbilität muss man Einschränkungen in Kauf nehmen.
Aber glücklicherweise führen immer mehrere Wege nach Rom, da kann man sich den persönlich bequemsten aussuchen... -
Ich gehe davon aus, daß "makeit" die Batchdatei ist.
Wieso bekommst du dann eine Rückgabe in StdoutRead() und ich nicht?
Testscript:Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
filedelete("test.bat")
filewrite("test.bat","dir c:\")
$i=Run(@ComSpec &" /c test.bat ", @ScriptDir, @SW_SHOW, $STDOUT_CHILD+$STDERR_CHILD)
$line=""
While 1
$line &= StdoutRead($i)
If @error Then ExitLoop
;GUICtrlSetData($edit, $line, 1)
Wend
WriteLog($line)While 1
[/autoit] [autoit][/autoit] [autoit]
$line = StderrRead($i)
If @error Then ExitLoop
WriteLog($line)
;GUICtrlSetData($edit, $line, 1)
Wendshellexecute("willi.txt")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func WriteLog($data)
[/autoit]
$file = FileOpen("willi.txt", 9)
FileWriteLine($file, $data)
FileClose($file)
EndFunc
/EDIT/ auf einem anderen Rechner ausprobiert funktioniert das Script wie gewünscht...wtf...hier funktionieren auch meine anderen "DOS"-Scripe und geben wie gewünscht auch bei Batchdateien den stdout bzw stderr an AutoIt zurück... -
hehe, erste Regel: Form follows Function!
Was aber bei einigen "DOS" Befehlen stört ist, daß Fehlermeldungen nur auf die Console ausgegeben werden....StdOut<>StdErr
Was dazu führt, daß z.B. bei Findstr die erfolgreichen Treffer in der Textdatei landen, und die "Fehler" in der (nicht per stderr abfragbaren) Konsole