1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Andy

Beiträge von Andy

  • Projekt !!!VORSCHLAG!!!

    • Andy
    • 27. Juni 2010 um 13:51

    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

  • [GDI+]Punkte machen und mit For Next die Farben ändern

    • Andy
    • 27. Juni 2010 um 13:19

    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>
    #include <WindowsConstants.au3>
    #include <Color.au3>

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

    Opt("GUIOnEventMode", 1)
    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)

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

    ;Palette für den Farbverlauf RRGGBB
    ;
    $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

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

    ;_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2) ;hier suboptimal.....

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

    While 1
    Sleep(100)
    WEnd

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

    Func death()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>death

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

    Func load()
    $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 ;==>load

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

    Func _createcolorfrompalette(ByRef $aPalette, $count, $maximum) ;gibt zwischenfarbe anhand der beiden Nachbarn im Palette-array zurück
    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

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

    $startrot = _ColorGetRed($aPalette[$index]) ;startfarbe
    $startgruen = _ColorGetGreen($aPalette[$index])
    $startblau = _ColorGetBlue($aPalette[$index])
    $endrot = _ColorGetRed($aPalette[$index + 1]) ;endfarbe
    $endgruen = _ColorGetGreen($aPalette[$index + 1])
    $endblau = _ColorGetBlue($aPalette[$index + 1])

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

    $xx = (($percent - $index)) ;faktor zwischen 0 und 1

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

    $r = Int($startrot - ($startrot - $endrot) * $xx) * 256 * 256 ;zwischenrot
    $g = Int($startgruen - ($startgruen - $endgruen) * $xx) * 256 ;zwischengruen
    $b = Int($startblau - ($startblau - $endblau) * $xx) ;zwischenblau
    Return $r + $g + $b
    EndFunc ;==>_createcolorfrompalette

    [/autoit]


    So kann man dann einfach eine Farbpalette erstellen.

  • Uhrzeit ständig aktualisieren, aber wie?

    • Andy
    • 27. Juni 2010 um 08:32

    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)
    $Zeit = GUICtrlCreateLabel("", 40, 50, 100, 17) ;muß nicht vorbelegt sein

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

    GUISetState(@SW_SHOW)
    $oldsec = ""

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

    While 1
    If $oldsec <> @SEC Then ;Zeit wird nur aktualisiert, wenn @sec sich verändert hat
    GUICtrlSetData($Zeit, @HOUR & " : " & @MIN & " : " & @SEC)
    $oldsec = @SEC
    EndIf

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

    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    @tuttifrutti,
    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...

    [autoit]

    Func _NowTime($sType = 3)
    If $sType < 3 Or $sType > 5 Then $sType = 3
    Return (_DateTimeFormat(@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC, $sType))
    EndFunc ;==>_NowTime

    [/autoit]


    d.h. je nach Systemzeiteinstellung werden die Sekunden "weggebügelt"! Und es sind nur HH:MM sichtbar....suboptimal!

  • Uhrzeit ständig aktualisieren, aber wie?

    • Andy
    • 26. Juni 2010 um 20:16
    [autoit]

    while Msgbox(0, "Uhrzeit", @Hour&" : "&@Min&" : "&@SEC,1)<>1 ;Msgbox wird jede Sekunde aktualisiert, so lange bis OK gedrückt wird
    wend

    [/autoit]

    sry, aber der musste jetzt sein :o)

  • SciTe erkennt keine ä ö ü ß ect.

    • Andy
    • 26. Juni 2010 um 20:07
    Zitat

    Oder könnte ich sonst hier und in dem Titel die
    Buschstaben schreiben? xD

    Ja 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^^

  • [Beendet] µitLight März

    • Andy
    • 26. Juni 2010 um 19:53

    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....

  • SciTe erkennt keine ä ö ü ß ect.

    • Andy
    • 26. Juni 2010 um 17:40

    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ü...

  • [Beendet] µitLight März

    • Andy
    • 26. Juni 2010 um 16:45
    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
    ;32-Bit Bytecode by Andy, eine der ersten Versionen, daher unoptimiert und "langsam"

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

    Local $maximum = 1299709 ;Obergrenze der Primzahlen
    Local $file = "Prim_" & $maximum & ".au3" ;Datei, in welche die Primzahlen geschrieben werden

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

    $t = TimerInit() ;Timestamp sichern
    $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]

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

    $primzahlen = "2" & @CR & "3" & @CR & DllStructGetData($tStruct, "Mem");2 und 3 sind die ersten Primzahlen, dann folgt der Rest
    $m = TimerDiff($t) ;Zeit seit Programmstart

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

    FileDelete($file) ;Primzahldatei löschen
    FileWrite($file, $primzahlen) ;Ausgabe der Primzahlen in Datei
    $m1 = TimerDiff($t);Zeit seit Programmstart incl Datei schreiben

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

    StringReplace($primzahlen, @CR, @CR, 0, 1) ;alle CR im String zählen.....auch AutoIt hat SPEEEEED^^
    $anzahlprim = @extended ;hätte man auch vom Assembler zurückgeben lassen können^^

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

    MsgBox(262144, "Primzahlen bis " & $maximum, $anzahlprim & " Primzahlen ermittelt in " & Int($m) & " Millisekunden" & @CRLF & _
    "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

    [/autoit]


    Wäre der Abräumer bzgl Geschwindigkeit und Kompaktheit des Codes....oder war verboten, Prozessormnemonics zu verwenden?

  • Hochbegabt

    • Andy
    • 25. Juni 2010 um 17:02

    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!" ^^

  • endlich lappi?

    • Andy
    • 25. Juni 2010 um 15:30
    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...

  • Mein erstes Werk - Taschenrechner

    • Andy
    • 25. Juni 2010 um 15:13

    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?

  • Arrays, Arrays, Arrays... ich verweilfe-.-

    • Andy
    • 25. Juni 2010 um 13:12

    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.

  • Arrays, Arrays, Arrays... ich verweilfe-.-

    • Andy
    • 24. Juni 2010 um 18:47

    Hi, eigentlich brauchst du keine Arrays^^
    Habe sie dennoch eingebaut, schau mal, ob du damit was anfangen kannst

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Dim $dkp[10] ;10 label, eigentlich sind die arrays in diesem beispiel unnötig...
    Dim $input[10]
    Dim $buttonplus[10]
    Dim $buttonminus[10]

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

    $gui = GUICreate("Buttonarray")
    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()

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

    While 1
    $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)

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

    Case $buttonplus[0] To $buttonminus[9] ;alle plus- und minus-buttons abfragen
    $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

    [/autoit]

    /edit/ Schnitzel, du benötigst die Arrays in deinem Script genausowenig wie ich die in meinem...^^
    Bsp: [ gelöst ] Automatische Variablennamen

  • Sehr großen Array (100000000000000000000000000)

    • Andy
    • 24. Juni 2010 um 17:36

    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?

  • Was mach ich falsch?

    • Andy
    • 24. Juni 2010 um 16:23

    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^^

  • Mehrere Tabs überblenden.

    • Andy
    • 24. Juni 2010 um 09:55

    Niemand hat geschrieben, daß du WM_POPUP benutzen MUSST!
    Eine der 1000 Möglichkeiten...

    [autoit]

    #include <WindowsConstants.au3>
    $maingui=guicreate("MainGui verschieben")
    guisetstate()
    $childgui=guicreate("ChildGui folgt dem MainGui",200,200,default,default,$DS_MODALFRAME+$DS_SETFOREGROUND,-1,$maingui)
    guisetstate()

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

    Do
    if WinExists($childgui) then
    $pos=WinGetPos($maingui)
    winmove($childgui,"",$pos[0]+100,$pos[1]+100)
    endif
    until guigetmsg()=-3

    [/autoit]


    oder

    [autoit]

    #include <WindowsConstants.au3>
    $maingui=guicreate("MainGui verschieben")
    guisetstate()
    $childgui=guicreate("ChildGui folgt dem MainGui",200,200,default,default,$DS_MODALFRAME+$DS_SETFOREGROUND,$WS_EX_MDICHILD,$maingui)
    guisetstate()

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

    Do
    until guigetmsg()=-3

    [/autoit]

    /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...

  • @CRLF in einer Variabel?

    • Andy
    • 24. Juni 2010 um 09:28

    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

  • Problem beim Zahl definieren

    • Andy
    • 24. Juni 2010 um 08:44
    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...

  • Inhalt aus noch laufender Cmd mitlesen

    • Andy
    • 23. Juni 2010 um 10:44

    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>
    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)

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

    While 1
    $line = StderrRead($i)
    If @error Then ExitLoop
    WriteLog($line)
    ;GUICtrlSetData($edit, $line, 1)
    Wend

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

    shellexecute("willi.txt")

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

    Func WriteLog($data)
    $file = FileOpen("willi.txt", 9)
    FileWriteLine($file, $data)
    FileClose($file)
    EndFunc

    [/autoit]


    /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...

  • Inhalt aus noch laufender Cmd mitlesen

    • Andy
    • 23. Juni 2010 um 10:16

    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™