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

Beiträge von name22

  • Word Datei speichern

    • name22
    • 2. Februar 2013 um 19:01

    Lies bitte mal die Hilfe zu Word Attach. Speziell den zweiten Parameter und die Beschreibung des Standardwerts.

  • Irrlicht Geschwindigkeit Optimierung

    • name22
    • 29. Januar 2013 um 08:42

    Da gibt es diverse Möglichkeiten.Ich verwende für große Datenmengen meistens eine Datenbank (SQL), aber ob sich das für deine simple Datenstruktur lohnt weiß ich nicht (man müsste ausprobieren ob und wie viel schneller das ist). Wie schreibst du denn im Moment in die Datei?
    Sonst fällt mir nur die Möglichkeit eines asynchronen Schreibvorgangs ein... Kannst ja mal danach googlen.

  • Flackerndes GUI bei Aktualisierung der Label

    • name22
    • 27. Januar 2013 um 16:47

    Das stimmt nicht ganz... So hast du eine Uhr die bis zu 1s daneben liegen kann.

  • Flackerndes GUI bei Aktualisierung der Label

    • name22
    • 18. Januar 2013 um 15:29

    @rossini Wenn du deinen ersten Beitrag bearbeitest kannst du oben das Präfix auf "[gelöst]" setzen. ;)
    Ich würde es eigentlich wie UEZ auch eher mit GDI bzw. GDIPlus umsetzen, aber für dich wird das wahrscheinlich mit den Standardcontrols einfacher sein. Außerdem scheint der GDI+ Ansatz für transparente Fenster den ich im Sinn habe sowieso nicht unter Windows XP zu funktionieren (vermutlich weil XP noch nicht mit Alpha Blending bei Fenstern zurechtkommt. Vollständige/Keine Transparenz pro Pixel funktioniert aber, wie man es an deinem Beispiel sieht) ^^.

  • Happy Birthday Oscar

    • name22
    • 18. Januar 2013 um 15:22

    Alles Gute Oscar :thumbup: .

  • AutoIT PNG Bilder ausgeben

    • name22
    • 17. Januar 2013 um 22:43

    Wenn du nur willst, dass ein Pic Control auch PNG Dateien akzeptiert, dann haben wir dafür schon einige Beispiele geschrieben, such mal im Forum danach.
    Falls ich dich komplett falsch verstanden habe, dann drück dich deutlicher aus :D.

    P.S. Woher kommt bitte die Funktion GUICtrlCreatePNG? Oder hast du dir die nur ausgedacht?

    Edit: Chris Von wegen umständlich... Es gibt schon fertige Funktionen dafür (ich hab sogar mal eine geschrieben)

  • Flackerndes GUI bei Aktualisierung der Label

    • name22
    • 17. Januar 2013 um 20:42
    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GuiconstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    Dim $nowmins, $nowhours, $nowsecs
    Dim $countmins, $counthours, $countsecs
    Dim $timermins, $timerhours, $timersecs
    Dim $endtime, $jetztzeit, $startzeit, $nettozeit
    Dim $relzeit, $relseconds, $relminutes, $relhours
    Dim $greenhx

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

    $greenhx = 0x72C45C
    $timerhours = 0
    $timermins = 5
    $timersecs = 0

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

    $nowhours = @HOUR
    $nowmins = @MIN
    $nowsecs = @SEC

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

    $countsecs = $nowsecs + $timersecs
    $countmins = $nowmins + $timermins
    $counthours = $nowhours + $timerhours

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

    If $countsecs > 59 Then
    $countsecs = $countsecs - 60
    $countmins = $countmins + 1
    EndIf

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

    If $countmins > 59 Then
    $countmins = $countmins - 60
    $counthours = $counthours + 1
    EndIf

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

    If $counthours > 23 Then
    Exit
    EndIf

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

    $startzeit = ($nowhours * 3600) + ($nowmins * 60) + $nowsecs
    $endtime = ($counthours * 3600) + ($countmins * 60) + $countsecs
    $nettozeit = ($timerhours * 3600) + ($timermins * 60) + $timersecs

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

    $Form1 = GUICreate("Form1", 120, 35, @DesktopWidth - 120, @DesktopHeight - 35, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED))

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

    GUISetBkColor(0xABCDEF)
    _WinAPI_SetLayeredWindowAttributes($Form1, 0xABCDEF, 255)

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

    $jetztzeit = (@HOUR * 3600) + (@MIN * 60) + @SEC
    $relhours = Floor(($endtime - $jetztzeit) / 3600)
    $relminutes = Floor((($endtime - $jetztzeit) - ($relhours * 3600)) / 60)
    $relseconds = Floor(($endtime - $jetztzeit) - ($relhours * 3600) - ($relminutes * 60))
    $Label_3 = GUICtrlCreateLabel(StringFormat("%02u", $relminutes), 38, 0, 100, 30)
    $Label_4 = GUICtrlCreateLabel(":", 66, 0, 100, 30)
    $Label_5 = GUICtrlCreateLabel(StringFormat("%02u", $relseconds), 76, 0, 100, 30)
    GUICtrlSetFont($Label_3, 20, 800, 0, "Arial")
    GUICtrlSetColor($Label_3, $greenhx)
    GUICtrlSetFont($Label_4, 20, 800, 0, "Arial")
    GUICtrlSetColor($Label_4, $greenhx)
    GUICtrlSetFont($Label_5, 20, 800, 0, "Arial")
    GUICtrlSetColor($Label_5, $greenhx)
    GUISetState()

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

    AdlibRegister("_Update", 100)

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

    While ($jetztzeit <= $endtime)
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    AdlibUnRegister()
    Exit
    EndSelect
    WEnd

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

    Func _Update()
    $relzeit = $endtime - $jetztzeit
    _SetData($Label_3, StringFormat("%02u", $relminutes))
    _SetData($Label_5, StringFormat("%02u", $relseconds))
    $jetztzeit = (@HOUR * 3600) + (@Min * 60) + @Sec
    $relhours = Floor(($endtime - $jetztzeit) / 3600)
    $relminutes = Floor((($endtime - $jetztzeit) - ($relhours * 3600)) /60)
    $relseconds = Floor(($endtime - $jetztzeit) - ($relhours * 3600) - ($relminutes * 60))
    EndFunc

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

    Func _SetData($cControl, $sData)
    If GUICtrlRead($cControl) <> $sData Then GUICtrlSetData($cControl, $sData)
    EndFunc

    [/autoit]


    Das lässt sich zwar immer noch verbessern, aber so flackert es nicht mehr und läuft zuverlässiger. Du solltest es generell vermeiden irgendwelche zusätzlichen Abfragen und Funktionen in die Hauptschleife zu schreiben (neben der GUIMsg Abfrage). Ich hab jetzt den Teil der für das updaten der Controls zuständig ist in eine Funktion gepackt und mit AdlibRegister mit einem 100ms Intervall registriert, dadurch wird die Funktion alle 100 Millisekunden aufgerufen (der normale Scriptverlauf wird für die Dauer der Funktion unterbrochen).
    Dann habe ich alle unnötigen Funktionen aus der Funktion genommen. Es reicht wenn du einmal die GUI mit GUISetState sichtbar machst, die versteckt sich nicht automatisch wieder :P. Das Gleiche gilt für GUICtrlSetFont und GUICtrlSetColor. Das muss alles nur ein einziges mal ausgeführt werden wenn du die entsprechenden Eigenschaften ändern willst. Dieser überflüssige Code war der Hauptgrund für das Flackern.
    Als letztes habe ich eine weitere Funktion geschrieben um den Text der Controls zu ändern, die ändert ihn aber nur wenn er sich vom momentanen Inhalt des Controls unterscheidet, so wird unnötiges aktualisieren vermeidet.

    Das solltest du dir vielleicht noch mal genauer anschauen, eventuell hilft dir dabei ein Tutorial oder die umfassende AutoIt Hilfedatei. ;)

  • Flackerndes GUI bei Aktualisierung der Label

    • name22
    • 17. Januar 2013 um 18:48

    Nicht jeder hat Lust die verlorengegangenen Zeilenumbrüche in deinem Script manuell wieder einzufügen ;).
    Kannst du nochmal versuchen das zu posten (eventuell mit einem anderen Browser)? Sonst könntest du es auch als Datei anhängen. Dann erleichterst du usns die Arbeit ein wenig.

  • Wie kommt ihr auf euren Nicknamen?

    • name22
    • 16. Januar 2013 um 14:24

    Blume *Hand geb* :D.

  • Wie kommt ihr auf euren Nicknamen?

    • name22
    • 15. Januar 2013 um 20:03

    Raupi Dann wäre das auch endlich mal geklärt :D. Wenn das nächste Mal Pokemonfieber in der SB ausbricht werde ich einfach diesen Post verlinken ;).

  • Wie kommt ihr auf euren Nicknamen?

    • name22
    • 15. Januar 2013 um 16:35

    Hm.. Na gut.
    Ich habe mich mal vor langer Zeit bei einem MMORPG angemeldet nachdem mich 2 Kumpels ewig damit genervt haben.
    Da ich von Natur aus extrem unkreativ bin, habe ich in die Zeile "Name:" einfach "Name" eingegeben... Das kam mir als erstes in den Sinn.
    Allerdings hatte da schon jemand die selbe Blöde Idee wie ich, also hab ich es mit "Name2" versucht. Kein Erfolg. Nachdem die nächsten 3 Versuche fehlschlugen war mir das zu blöd und ich bin direkt zu 22 gesprungen.
    Nach ein paar Tagen hatte ich mich schon daran gewöhnt.

    Das war die langweilige Geschichte meines langweiligen Namens *seufz*...

  • Ein neuer im Boot :)

    • name22
    • 15. Januar 2013 um 08:35

    Herzlich Willkommen an Board ;).

  • Kleines Problem (AutoIt-einsteiger)

    • name22
    • 12. Januar 2013 um 21:14

    Dann such dir das nächste Mal bitte einen anderen sinnlosen Zweck. Laut unseren Forenregeln sind Spielebots nämlich nicht erwünscht.

  • Wie wird ein String in Base64 verwandelt?

    • name22
    • 12. Januar 2013 um 19:08

    Ich bezweifle, dass ich das besser als Wikipedia erklären kann. Ich versuchs trotzdem mal :D.

    Base64 ist ein Stellenwertsystem genau wie Base10, unser Dezimalsystem, allerdings nicht mit einem Stellenwert von 10, sondern 64. Das heißt, wenn du eine Ziffer in diesem System nach links verschiebst ist sie danach nicht 10 mal, sondern 64 mal so groß wie vorher. Dazu braucht man logischerweise auch 64 Ziffern um all diese Werte mit einem einzigen Zeichen darstellen zu können.
    Du kannst Werte in jedes dieser Stellenwertsysteme konvertieren. Zum Beispiel von Dezimal zu Hexadezimal (Base16) oder auch ins Binärsystem. Der Wert bleibt der gleiche, nur die Darstellung ändert sich.

    Wenn du nun einen String in Base64 kodierst machst du nichts anderes. Jedes einzelne Zeichen ist im Grunde nur eine Zahl. Je nach Zeichenkodierung kann ein Zeichen auf verschiedene Arten durch einen Wert repräsentiert werden. Im Fall von ASCII werden alle 128 Zeichen (Buchstaben, Zahlen, Sonderzeichen etc.) in 7-bit im Binärsystem kodiert (wenn du alle 7-Bits mit einsen füllst bekommst du 127, zusammen mit 0 macht das 128 verschiedene Zahlen).
    Base64 ist für die Kodierung von 8-Bit Daten besonders gut geeignet. Davon kannst du nämlich immer 3-Byte der ursrünglichen Daten (1-Byte=8-Bit) aneinanderreihen und auf 4 aneinandergereihte 6-Bit Blöcke im Base64 System aufteilen. Dadurch sinkt die Anzahl der Zeichen für die Kodierung von 256 auf 64 und kann durch lesbare und verbreitete Zeichen dargestellt werden die auch mit sehr alten Systemen noch kompatibel sind. Am String ändert das nichts, bloß kann den dann kein Mensch mehr normal lesen :P.

    Falls hier Fehler drin sind, bitte ich natürlich darum mich zu verbessern.

    Edit: Das von James gefällt mir wesentlich besser. Wenn du das nicht verstehst, machst du was falsch :D.

  • [OpenGl] Feuerwerk

    • name22
    • 12. Januar 2013 um 12:52

    Führ es mal im 32-bit Modus aus.

    [autoit]

    #AutoIt3Wrapper_Usex64=0

    [/autoit]
  • [OpenGl] Feuerwerk

    • name22
    • 11. Januar 2013 um 22:52

    Nett. Aber richtig cool wird das ja erst durch die OpenGL - AutoIt Kombination :D.
    Bei mir sind es übrigens auch ca. 148 FPS.

  • Und schon wieder einer..

    • name22
    • 11. Januar 2013 um 16:44

    Herzlich Willkommen im Forum dodcar.
    Keine Angst, wir beißen nicht (es sei denn du verletzt die Forenegeln :P). Du kannst also bedenkenlos posten ^^.

  • Inputbox maximale anzahl Zeichen erweitern

    • name22
    • 11. Januar 2013 um 08:25

    Falls du unbedingt beim Input Control bleiben möchtest, dann kannst du dessen Zeichenlimit mit

    [autoit]

    GUICtrlSetLimit

    [/autoit]

    setzen.
    Ansonsten würde ich dir auch empfehlen ein EditControl (Andys Beitrag) zu verwenden. Das ist für die Eingabe von längeren Texten übersichtlicher.

  • Word Datei speichern

    • name22
    • 10. Januar 2013 um 20:26

    Das ist relativ einfach. Schau dir mal diese beiden Funktionen aus der Word.au3 an:

    [autoit]

    _WordDocSave
    _WordDocSaveAs

    [/autoit]


    In der Hilfe findest du auch Beispiele dazu.

  • VSync per WinAPI ?

    • name22
    • 9. Januar 2013 um 13:41

    Ich bin mir relativ sicher, dass sowohl GDI als auch GDIPlus das nicht unterstützen. Ich habe auch in anderen Programmiersprachen noch keine Möglichkeit gefunden sie dazu zu bringen. Ob das also direkt per WinAPI geht ist fraglich, ich glaube es nicht.
    Die neueren Grafikbibliotheken - DirectX (z.B. DirectDraw) etc. - sollten das von Haus aus unterstützen, falls du das als Alternative in Betracht ziehst. ;) Eventuell kann man auch beide Grafiklösungen kombinieren, aber je nach Aufwand lohnt sich das vielleicht nicht.
    Ansonsten müsste man irgendwie eine andere, externe Möglichkeit finden den VBI des Monitors mitzukriegen. Normalerweise macht man das ja über die Grafikkarte und deren Treiber wenn mich nicht alles täuscht, aber ob man da mit AutoIt rankommt kann ich nicht sagen. Vor allem weiß ich nicht wie sich da die einzelnen Grafikkarten unterscheiden...

    Naja, vielleicht kommt jetzt noch einer unserer genialen Köpfe vorbei (Andy, UEZ, eukalyptus etc. :D) und präsentiert dir hier die Lösung auf dem Silberteller. Hoffen kann man ja ;).

    Zitat von IPU

    Das Problem was hier auftritt lässt sich vermutlich aber mit dem klassischen Backbuffer beheben (Beispiele wie sowas aussieht in AutoIT findet man z.B. hier) - ich hätts dir zwar auch auf die Schnelle in dein Script bauen können, aber dazu hätte ich das Script in meinem müden Kopf kapieren müssen. Hoffe, dass dir das trotz allem hilft. ;)

    Würde mich interessieren wie du das einbauen willst, wenn es bereits im Script vorhanden ist.

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™