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

  • ImageGUI UDF

    • name22
    • 20. November 2013 um 23:59

    Ich habe die Funktion mal hier markiert:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Diese Funktion wird nie aufgerufen und somit ihr Inhalt nie ausgeführt.

    Dateien

    Desktop_2013_11_20_23_56_15_415.png 105,94 kB – 0 Downloads
  • ImageGUI UDF

    • name22
    • 20. November 2013 um 23:41

    Du könntest auch gleich mal Stellung zu den Sachen nehmen die ich bereits genannt habe.
    Der Hauptgrund, warum dein Script überhaupt nichts macht ist folgender (zum dritten Mal weise ich jetzt darauf hin): Alles was irgendetwas sichtbares bewirken würde ist in einer Funktion die nie aufgerufen wird.

  • ImageGUI UDF

    • name22
    • 20. November 2013 um 23:27
    Zitat

    ja die Grundlagen sind mir bekannt.

    Nein sind sie nicht. Das ist kein "Runtergemache" sondern eine simple Schlussfolgerung aus deinem hier dargelegten Werk.

    Zitat

    Wenn ich mein Testscript ausführe, dann öffnet sich aber die GUI nicht ich finde meinen Fehler leider nicht

    Es ist eben nicht ein Fehler, sondern es sind einige Fehler. In meinem Beitrag steht übrigens schon drin warum sich bei deinem Script überhaupt nichts tut.

    Zitat

    dann öffnet sich aber die GUI nicht

    Warum schreibst du sowas nicht am Anfang in den ersten Beitrag? Das ist genau die Art von Fehlerbeschreibung die man braucht um dir möglichst schnell zu helfen. Wenn du gute und schnelle Hilfe willst, dann musst du eben lernen deine Probleme besser zu beschreiben, sich zu beschweren, dass du das nicht gesagt kriegen willst und stattdessen lieber die fertige Lösung zu deinem nicht genannten Problem hättest, hilft hier niemandem.

  • ImageGUI UDF

    • name22
    • 20. November 2013 um 23:09

    Erinnerst du dich noch an deinen letzten Thread? Du hast ihn mit den Worten "es klappt leider nicht" eröffnet.
    Ich zitiere mal meinen Beitrag aus diesem Thread:

    Zitat

    Bitte formuliere in Zukunft deine Problembeschreibungen etwas detailreicher. "klappt leider nicht" hilft uns nicht wirklich weiter.


    Nach diesem Hinweis war deine nächste Antwort "... leider funktioniert es noch immer nicht.", also auch wieder recht knapp.
    Jetzt machst du den nächsten Thread auf und deine Problembeschreibung besteht erneut aus: "... doch will es nicht so ganz funktionieren.".
    Du wirfst uns ein Problem vor die Füße, sagst es funktioniere nicht und wir sollen mal machen. Das ist zwar dein gutes Recht, aber wenn du das öfter so machst habe ich keine Lust mehr dir zu helfen.

    Und dein Script halte ich für einen schlechten Scherz. Du wurdest schon einmal darauf hingewiesen dir die Grundlagen nochmal anzuschauen.
    Du hast in deinem Script zwei große Funktionen deklariert in denen sich wohl ein Großteil des Geschehens abspielen soll. Schlecht nur, dass die nie aufgerufen werden. Das ist übrigens der einzige Grund warum AutoIt dir nicht zig Fehlermeldungen anzeigt.
    Du hast wieder einmal den Ablauf der einzelnen Bestandteile deines Scripts völlig durcheinander gebracht. Das passiert wohl beim Copy & Paste gelegentlich...

  • 2 kleine Fragen [Mathematik]

    • name22
    • 20. November 2013 um 22:32

    Da war der Andy mal wieder schneller :rolleyes: .
    Aber ich möchte trotzdem mal meine Antwort präsentieren (die sich jedoch auf Frage 2 beschränkt), schließlich sind Polynome viel cooler :P.

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    ; - Author: name22 (http://www.autoit.de)

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

    Opt("GUIOnEventMode", 1)

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

    Global Const $nPiHalf = ACos(-1) / 2
    Global $hWnd_GUI, $hDC_Window, $hDC_Bitmap, $hBitmap
    Global $nSleepTime, $nFPS_Average, $nFPS_Cur, $nFPS_Display, $tPrecSleep, $pPrecSleep, $vNTdll
    Global $hGraphics, $hBrush_Black, $hBrush_Red, $hStringFormat, $hFamily_FPS, $hFont_FPS, $aMeasure, $tLayout_FPS
    Global $nT_Sleep, $nT_UpdateFPS, $nT_Movement, $nMovementTime, $nMovementPhase, $nFrameTime
    Global $nX_Source, $nY_Source, $nX_Pos, $nY_Pos, $nX_Target, $nY_Target

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

    ;###-v-SETTINGS-v-###

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

    Global $iWidth = 600
    Global $iHeight = 400
    Global $iARGB_BG = 0xFFFFFFFF
    Global $nFPS = 60

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

    Global $nMovementDuration = 2000

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

    $nX_Target = Random(20, $iWidth - 20, 1)
    $nY_Target = Random(20, $iHeight - 20, 1)

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

    ;###-^-SETTINGS-^-###

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

    $nSleepTime = 1000 / $nFPS

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

    $nFPS_Display = 0
    $nFPS_Average = $nFPS

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

    $vNTdll = DllOpen("ntdll.dll")

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

    $tPrecSleep = DllStructCreate("int64 time;")
    $pPrecSleep = DllStructGetPtr($tPrecSleep)

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

    $hWnd_GUI = GUICreate("Motion along linear path", $iWidth, $iHeight)
    GUISetState()

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

    $hDC_Window = _WinAPI_GetDC($hWnd_GUI)
    $hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
    $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
    _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Bitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)

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

    $hBrush_Black = _GDIPlus_BrushCreateSolid(0xFF000000)
    $hBrush_Red = _GDIPlus_BrushCreateSolid(0xFFFF0000)

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

    $hStringFormat = _GDIPlus_StringFormatCreate()
    $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial")
    $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 6)

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

    $aMeasure = _GDIPlus_GraphicsMeasureString($hGraphics, "FPS: 0000", $hFont_FPS, _GDIPlus_RectFCreate(), $hStringFormat)
    $tLayout_FPS = $aMeasure[0]
    $aMeasure = ""
    DllStructSetData($tLayout_FPS, "X", $iWidth - DllStructGetData($tLayout_FPS, "Width") - 3)
    DllStructSetData($tLayout_FPS, "Y", $iHeight - DllStructGetData($tLayout_FPS, "Height"))
    DllStructSetData($tLayout_FPS, "Width", DllStructGetData($tLayout_FPS, "Width") + 3)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
    OnAutoItExitRegister("_Shutdown")

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

    $nT_UpdateFPS = TimerInit()
    $nT_Sleep = TimerInit()
    _SetNewTarget()
    While True
    DllStructSetData($tPrecSleep, "time", -10000 * ($nSleepTime - TimerDiff($nT_Sleep)))
    DllCall($vNTdll, "dword", "ZwDelayExecution", "int", 0, "ptr", $pPrecSleep)
    $nFrameTime = TimerDiff($nT_Sleep)
    $nT_Sleep = TimerInit()

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

    $nFPS_Cur = 1000 / $nFrameTime
    If TimerDiff($nT_UpdateFPS) >= 1000 Then
    $nFPS_Display = $nFPS_Cur
    $nT_UpdateFPS = TimerInit()
    EndIf

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

    If TimerDiff($nT_Movement) >= $nMovementDuration Then _SetNewTarget()

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

    $nMovementTime = TimerDiff($nT_Movement)
    $nMovementPhase = _MovementTimingFunction($nMovementTime, $nMovementDuration)

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

    $nX_Pos = $nX_Source + $nMovementPhase * ($nX_Target - $nX_Source)
    $nY_Pos = $nY_Source + $nMovementPhase * ($nY_Target - $nY_Source)

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

    _GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
    _GDIPlus_GraphicsFillEllipse($hGraphics, $nX_Pos - 20, $nY_Pos - 20, 40, 40, $hBrush_Red)
    _GDIPlus_GraphicsFillRect($hGraphics, $nX_Target - 2, $nY_Target - 2, 4, 4, $hBrush_Black)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, "FPS: " & Round($nFPS_Display, 1), $hFont_FPS, $tLayout_FPS, $hStringFormat, $hBrush_Black)
    _WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
    WEnd

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

    Func _Close()
    Exit
    EndFunc ;==>_Close

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

    Func _SetNewTarget()
    $nX_Source = $nX_Target
    $nY_Source = $nY_Target
    $nX_Target = Random(20, $iWidth - 20, 1)
    $nY_Target = Random(20, $iHeight - 20, 1)
    $nT_Movement = TimerInit()
    EndFunc

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

    Func _MovementTimingFunction($nTime, $nDuration)
    Local $T = $nTime / $nDuration
    Return $T ^ 2 * (3 - 2 * $T)
    EndFunc

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

    Func _Shutdown()
    _WinAPI_ReleaseDC($hWnd_GUI, $hDC_Window)
    _WinAPI_DeleteDC($hDC_Bitmap)
    _WinAPI_DeleteObject($hBitmap)

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

    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BrushDispose($hBrush_Black)
    _GDIPlus_BrushDispose($hBrush_Red)
    _GDIPlus_StringFormatDispose($hStringFormat)
    _GDIPlus_FontFamilyDispose($hFamily_FPS)
    _GDIPlus_FontDispose($hFont_FPS)
    _GDIPlus_Shutdown()

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

    DllClose($vNTdll)
    EndFunc ;==>_Shutdown

    [/autoit]


    Abgesehen davon lässt sich meine Version vermutlich eher in ein Spiel o.Ä. einbauen, das auf einer festen Bildwiederholrate basiert. Andy zeigt mehr die Mathematik hinter dem ganzen.

    Edit: Bevor ich es vergesse: diese Funktion lässt sich natürlich auf jede beliebige Wertänderung mit konstantem Start- und Endwert anwenden, also auch Farbänderungen. Das kannst du ja vermutlich Andys Beispiel entnehmen.

  • GDI+ Image als GUI nutzen

    • name22
    • 19. November 2013 um 18:36
    • Bitte formuliere in Zukunft deine Problembeschreibungen etwas detailreicher. "klappt leider nicht" hilft uns nicht wirklich weiter.
    • Lies dir am besten noch mal einige grundlegende Tutorials zu GDI+ durch.
    • Du versuchst eine Grafik von einem Fenster zu erstellen, dass zu dem Zeitpunkt nicht existiert. $hGUI ist nur eine leere Variable, das Fensterhandle wird erst später durch GUICreate dort eingetragen.
    • Du musst schon eine Datei für _GDIPlus_ImageLoadFromFile verwenden (wie es auch in der Hilfe beschrieben steht) und keine URL.
    • Du verwendest direkt nach Erzeugung des, noch inaktiven, Fensters diese Zeile: GUISetState($GUI_DISABLE). Ich gehe davon aus, dass du das Fenster "disablen" willst, warum weiß ich nicht. Allerdings musst du dafür erstens das Makro @SW_DISABLE verwenden, nicht die Variable $GUI_DISABLE (ja, das steht auch in der Hilfe), zweitens würdest du keinen Unterschied feststellen, denn dein Fenster ist ja noch nicht einmal sichtbar (das macht man übrigens mit GUISetState(@SW_SHOW) oder auch GUISetState()).
  • Autoit funktioniert nicht mit internet explorer 11? :(

    • name22
    • 7. November 2013 um 21:50

    Abgesehen davon passt das nicht wirklich in diesen Bereich ;). Vielleicht kann ein Mod das in Hilfe & Unterstützung verschieben.

  • FSK im Internet (Info)

    • name22
    • 7. November 2013 um 13:03

    Ich stimmme minx zu. Solche Inhalte sollten vermieden werden und haben auch nicht besonders viel mit dem eigentlichen Thema des Forums zu tun.
    Die User die sich durch minxs Thread angesprochen fühlen sollten sich daran erinnert fühlen, dass die Shoutbox dieses Forums öffentlich einsehbar und auf der Hauptseite zu sehen ist. Die Supportfunktion dieses Forums hat weiterhin oberste Priorität ;).
    Ich denke die Betroffenen können sich in Zukunft ein wenig zurückhalten ohne, dass hier große Maßnahmen durchgeführt werden müssten. Ohne die humorvollen Gespräche in der SB wäre dieses Forum nicht mehr das selbe. :thumbup:

  • Facebook Spiele in GUI einbinden?

    • name22
    • 31. Oktober 2013 um 13:02

    Sicher, dass Facebook einer solchen Nutzung zustimmt?

  • Andere Schrift (-größe) für _GUICtrlComboBox_Create

    • name22
    • 15. Oktober 2013 um 16:43

    Du musst ein Font Objekt laden und der _SetFont Funktion übergeben. Lediglich den Namen der Schriftart anzugeben reicht nicht...
    Ein Font Objekt kannst du zum Beispiel mit _WinAPI_CreateFont, oder _WinAPI_GetStockObject erzeugen. Warum du versuchst als Parameter 1 anzugeben entzieht sich auch meiner Vorstellungskraft. ?(
    Und vergiss nicht, dass Font Objekt mit WinAPI_DeleteObject aus dem Speicher zu löschen.

  • Hallo zusammen

    • name22
    • 10. Oktober 2013 um 17:31

    Ich heiße leider nicht Christoph, aber ich werde dich einfach trotzdem herzlich willkommen heißen. ;)

  • Happy Birthday water

    • name22
    • 8. Oktober 2013 um 18:50

    Alles Gute zum Geburtstag water :thumbup: !

  • name22 - Party!

    • name22
    • 6. Oktober 2013 um 16:20

    Ich hatte leider keine Zeit gestern vorbeizuschauen, aber ich freue mich riesig so viele Glückwünsche zu bekommen. ;)
    Ich bin zutiefst gerührt... Dieses Forum ist eben doch das beste :love: .
    Vielen Dank euch allen!

  • Gleiche IP bei zwei PCs? o.O

    • name22
    • 16. September 2013 um 19:31

    Nicht jeder PC hat unbedingt eine eigene IP. Jeder Internetanschluss hat eine eigene IP. Wenn alle deine PCs über einen Router o.Ä. mit dem Internet verbunden sind, erhalten sie verschiedene lokale IP-Adressen, aber nutzen alle die gleiche öffentliche IP (die an Server gesendet wird wenn du dich mit ihnen verbindest). _GetIP() liest die öffentliche IP-Adresse aus. Vergleiche diese Werte mal mit den @IPAdress1, 2, 3 etc. Makros.
    Mehr zum Thema: http://de.wikipedia.org/wiki/Network_Address_Translation

  • GDIPlus Ebene erstellen ?

    • name22
    • 14. September 2013 um 23:47

    Das hatte ich auch vermutet. Dann sollte mein Vorschlag ja genau das richtige sein.

  • GDIPlus Ebene erstellen ?

    • name22
    • 14. September 2013 um 23:36

    Ich bin mir nicht ganz sicher was du meinst. Ich kann mit dem Begriff "Ebenen" im Zusammenhang mit GDIPlus nicht wirklich etwas anfangen.
    Falls ich dich richtig verstehe, suchst du eine Art zusätzlichen Buffer für die Map. In diesem Fall könntest du einfach eine zusätzliche Bitmap anlegen und mit ImageGetGraphicsContext bearbeiten. Diese Bitmap kannst du verändern und auf den Backbuffer zeichnen ohne, dass du diese Veränderungen jedes mal neu zeichnen musst.

  • iniWrite überschreiben umgehen

    • name22
    • 14. September 2013 um 22:40

    Du könntest vorher überprüfen, ob der Eintrag existiert.

    Spoiler anzeigen
    [autoit]

    If IniRead("test.ini", "blub", "test", -1) = -1 Then IniWrite("test.ini", "blub", "test", "AutoIt")

    [/autoit]
  • gesicherte Übertragung TCP

    • name22
    • 12. September 2013 um 22:09

    Eigentlich ist UDP schneller als TCP, weil es keinerlei Überprüfung auf Datenkonsistenz gibt. Fehler werden nicht bemerkt bzw. ignoriert... Hier noch ein Link über die Unterschiede zwischen den beiden Protokollen: http://www.skullbox.net/tcpudp.php
    Es gibt nur wenige Fälle in denen man auf UDP zurückgreift (z.B. wenn Fehler in der Übertragung egal sind).

  • Geschriebenes mit _WinAPI_DrawText wieder löschen um etwas neues zu schreiben.

    • name22
    • 7. September 2013 um 19:51

    Man kann das auch mit den gewöhnlichen GDI32 Funktionen machen. Das soll BinäryChief für sich entscheiden. ;)
    Wenn du möchtest, kann ich ein kleines Beispiel zusammensetzen, dass nur mit den GDI32 Funktionen der WinAPI arbeitet.

  • Geschriebenes mit _WinAPI_DrawText wieder löschen um etwas neues zu schreiben.

    • name22
    • 7. September 2013 um 18:32

    Bitte verwende in Zukunft Den "Quellcode" Tab im Beitragseditor und klicke vor dem Absenden eines Beitrags nochmal auf "Vorschau", damit solche Formatierungsfehler nicht vorkommen.
    Ich habe mal dein Script für dich auseinandergefriemelt:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <FontConstants.au3>

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

    Global $tRECT, $hFont, $hOldFont, $hDC

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

    HotKeySet("{ESC}", "_Exit")

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

    $tRECT = DllStructCreate($tagRect)
    DllStructSetData($tRECT, "Left", 5)
    DllStructSetData($tRECT, "Top", 5)
    DllStructSetData($tRECT, "Right", 250)
    DllStructSetData($tRECT, "Bottom", 50)

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

    $hDC = _WinAPI_GetDC(0)
    $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
    $hOldFont = _WinAPI_SelectObject($hDC, $hFont)

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

    _WinAPI_SetTextColor($hDC, 0x0000FF)
    _WinAPI_SetBkColor($hDC, 0x000000) ;Comment next line to get black background instead of transparent one
    _WinAPI_SetBkMode($hDC, $TRANSPARENT)

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

    $timer = TimerInit()

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

    While 1
    $time = TimerDiff($timer)
    _WinAPI_DrawText($hDC, $time, $tRECT, $DT_CENTER)
    Sleep(100)
    WEnd

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

    Func _Exit()
    _WinAPI_SelectObject($hDC, $hOldFont)
    _WinAPI_DeleteObject($hFont)
    _WinAPI_ReleaseDC(0, $hDC)
    _WinAPI_InvalidateRect(0, 0)
    $tRECT = 0
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Das einzige was du in der Hauptschleife machst, ist bei jedem Durchgang einen neuen String zu zeichnen. Wieso erwartest du, dass dadurch der alte verschwindet? :P
    Stell dir den Ablauf deines Programms so vor: Du hast ein Blatt Papier, nimmst einen Bleistift und schreibst "alkdfjslh" darauf. Jetzt schreibst du "askjbasfdö" an die exakt gleich Stelle. Was passiert? Die Texte überlagern sich, weil der Zeichenbereich davor nicht gesäubert/zurückgesetzt wurde.
    Im Programm machst du das, indem du einfach den Zeichenbereich mit der gewünschten Hintergrundfarbe übermalst, bevor du etwas neues zeichnen willst.

    Ich würde dir allerdings empfehlen, nicht direkt auf den Desktop zu zeichnen, da dass ein recht unsauberer Prozess ist. Wenn du ein eigenes Fenster erstellst, das komplett transparent machst und dann darauf mit den GDI32 Funktionen rummalst, kannst du das auch wieder zuverlässig nach jedem Zeichenvorgang zurücksetzen, ohne dass dabei etwas schiefläuft oder alles anfängt zu flackern.

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™