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

  • _ScreenCapture macht keinen Screenshot

    • name22
    • 25. Dezember 2010 um 23:46
    Zitat

    Okay ich habe es in Call of Duty Modern Warfare 2 MP getestet.
    Ich wollte es nutzen um exotische Abschüsse oder wunderbare Kill-Raten festzuhalten.
    Das Spiel läuft ja maximiert.

    Ich erhalte jedoch nur ein schwarzes Bild.


    Du solltest dir schon ALLE Beiträge durchlesen :rolleyes: .

    Zitat von blubbstar

    Bei Spielen mit DirectX bzw. OpenGL unter Win Vista / 7 kann man so keine Screenshots machen. Unter XP lief das noch.
    Es gibt eine Lösung, aber ob die in AutoIt schon existiert, keine Ahnung.

  • _ScreenCapture macht keinen Screenshot

    • name22
    • 25. Dezember 2010 um 22:54
    Zitat

    Keine Ahnung, warum STRG etc. nicht angenommen werden

    Zitat von Hilfe zu HotKeySet

    Folgende HotKeys können nicht genutzt werden:

    Strg+Alt+Entf Reserviert von Windows selbst
    F12 Ebenfalls durch Windows reserviert (API)
    Ziffernblock Enter Taste Man sollte stattdessen {Enter} verwenden, da hierbei beide Enter-Tasten abgefangen werden.
    Win+B,D,E,F,L,M,R,U; und Win+Shift+M Reserviert durch Windows
    Anmerkung: Win+B und Win+L könnten nur bei Windows XP und höher reserviert sein.
    Alt, Strg, Shift, Win Dies sind Modifizierungstasten
    Weitere Jede globale Tastenkombination, die mit einer anderen Software definiert wurde, und jede Kombination aus Basistasten, wie '{F1}{F2}', sowie jede Form von '{LALT}' oder '{ALTDOWN}'.

    Alles anzeigen
    Zitat

    PS: Ich bekomme schwarzen BIldschirm. :(


    Wenn du einen Screenshot von einem Spiel macht? Bei mir funktioniert das Programm unter normalen Umständen nämlich problemlos.

  • _FileReadToArray ???Fehler???

    • name22
    • 25. Dezember 2010 um 19:13

    Vielleicht werden bestimmte Unicode Zeichen von _FileReadToArray nicht erkannt :S .

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 25. Dezember 2010 um 18:10
    Zitat

    @ SEuBo hab dir auch schon im anderen Forum gesagt, dass du vergessen hast, in die Exit Funktion das DLLClose einzubauen :P


    Ich habs auch vergessen :whistling: ....

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 25. Dezember 2010 um 18:01

    SEuBo Ach menno, das wollte ich auch gerade machen :D . Aber wenigstens sieht meins, dank Anti-Aliasing, besser aus :P.

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)

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

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

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

    $vU32DLL = DllOpen("User32.dll")

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

    $iGUIColorBG = 0xFFFFFFFF
    $iGUIWidth = @DesktopWidth
    $iGUIHeight = @DesktopHeight

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

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight, Default, Default, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)

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

    $hDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iGUIWidth)
    DllStructSetData($tSize, "Y", $iGUIHeight)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    GUIRegisterMsg($WM_PAINT, "_ReDraw")
    $aMousePosOld = MouseGetPos()

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

    While True
    $aMousePosNew = MouseGetPos()
    If _IsPressed("A3", $vU32DLL) Then
    _ReDraw()
    If $aMousePosOld[0] <> $aMousePosNew[0] Or $aMousePosOld[1] <> $aMousePosNew[1] Then _GDIPlus_GraphicsDrawLine($hBuffer, $aMousePosOld[0], $aMousePosOld[1], $aMousePosNew[0], $aMousePosNew[1], $hPen)
    $aMousePosOld = $aMousePosNew
    EndIf
    WEnd

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

    Func _ReDraw()
    Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)
    EndFunc

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_Shutdown()
    DllClose($vU32DLL)
    Exit
    EndFunc

    [/autoit]


    Hier wird mit der rechten STRG Taste gemalt.

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 25. Dezember 2010 um 16:37
    Zitat

    While GUIGetMsg() <> -3 ;Wartet nur bis einer auf das X oben geht
    WEnd
    Den Teil verstehe ich noch nicht ganz :D


    Du solltest dir vielleicht mal ein Tutorial zum Thema GUI Message Loop durchlesen... GUIGetMsg() gibt die ID eines GUI Events bzw. die ControlID eines angeklickten Controls zurück. -3 wird zurückgegeben wenn du auf den X Button des Fensters klickst ;).

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 25. Dezember 2010 um 16:27
    Zitat

    Funktioniert dieses Programm nur auf ner Gui? Oder ist es auch möglich einfach nur auf der Oberfläche einen beispielsweise roten Punkt zu machen? :)


    Du kannst auch einen roten Stift nehmen und damit einen Punkt auf den Bildschrim malen :D... WO möchtest du denn einen farbigen Punkt hinmalen? Du kannst ihn auf eine GUI malen, auf den Desktophintergrund, in eine Datei etc. ;)

    Zitat

    Dazu habe ich ja die Forumsregeln beachtet, oder habe ich etwa was falsch gemacht?


    Das war doch nur eine Aufzählung von Verhaltensweisen die in diesem Forum keine Unterstützung einbringen würden. :rolleyes:

  • TicTacToe Computer als gegner

    • name22
    • 24. Dezember 2010 um 17:30

    Schnuffel Lustiger Film. :D Jetzt müssen wir noch eine coole Computerstimme bei TicTacToe einbauen ^^.

  • Wert von Timerinit()

    • name22
    • 24. Dezember 2010 um 17:21
    Zitat

    mich interessiert der Wert welcher der Handle zurückgibt


    Der Handle gibt keinen Wert zurück... TimerInit gibt eine Zeitmarke zurück, also die bisherige Laufzeit in Millisekunden. Und TimerDiff ist im Prinzip nichts anderes als TimerInit() - $begin.

  • UDF: ToolTips für Slider Controls

    • name22
    • 24. Dezember 2010 um 16:50

    Update: Ich habe jetzt mal eine Version mit einem 'cooleren' ToolTip geschrieben. Ich hoffe es gefällt euch :thumbup: .

  • UDF: GDI+ Alternativer ToolTip

    • name22
    • 24. Dezember 2010 um 16:40

    Da der Standard ToolTip von Windows so langweilig aussieht, habe ich mir einfach meinen eigenen gemacht. :thumbup:
    Die UDF benötigt allerdings auch wieder die GDIP.au3. Ich hoffe es gefällt euch und ich würde mich wie immer über Verbesserungen/Kritik freuen. :)
    Bei Bedarf könnte ich ja noch weitere Designs für ToolTips gestalten. ;)

    UDF
    [autoit]

    #include-once

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

    ; #INDEX# =======================================================================================================================
    ; Title .........: ToolTipEx
    ; AutoIt Version : 3.3.6+
    ; Language ......: Deutsch
    ; Description ...: Funktionen für einen alternativen ToolTip.
    ; Author ........: name22 (autoit.de)
    ; ===============================================================================================================================

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

    ; #CURRENT# =====================================================================================================================
    ;_ToolTip_Create
    ;_ToolTip_BGSetColor
    ;_ToolTip_TextSetColor
    ;_ToolTip_BorderSetColor
    ;_ToolTip_BorderSetWidth
    ;_ToolTip_FontSetOptions
    ; ===============================================================================================================================

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

    ; #INTERNAL_USE_ONLY# ===========================================================================================================
    ;__ToolTip_Shutdown
    ;__ToolTip_ReDraw
    ; ===============================================================================================================================

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

    #include <GDIP.au3>
    #include <WinApi.au3>
    #include <WindowsConstants.au3>

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

    OnAutoItExitRegister("__ToolTip_Shutdown")

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

    Global $hBitmap_Tip, $hBuffer_Tip, $iRadius_Tip = 3, $iWidth_Win, $iHeight_Win

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

    $hWnd_Tip = GUICreate("", 100, 100, Default, Default, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))

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

    _GDIPlus_Startup()

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

    $hFormat_Tip = _GDIPlus_StringFormatCreate()
    $hFamily_Tip = _GDIPlus_FontFamilyCreate("Arial")
    $hFont_Tip = _GDIPlus_FontCreate($hFamily_Tip, 10)

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

    $hGraphic_Tip = _GDIPlus_GraphicsCreateFromHWND($hWnd_Tip)

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

    $hBrush_BG_Tip = _GDIPlus_BrushCreateSolid(0xD0202020)
    $hBrush_Text_Tip = _GDIPlus_BrushCreateSolid(0xE0E0E0E0)
    $hBrush_Hatch_Tip = _GDIPlus_HatchBrushCreate($HatchStyleCross, 0xD0D0D0D0, 0xD0F0F0F0)
    $hPen_Border_Tip = _GDIPlus_PenCreate(0xE0E57913, 2)

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

    $hDC = _WinAPI_GetDC($hWnd_Tip)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", 100)
    DllStructSetData($tSize, "Y", 100)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_Create
    ; Description ...: Zeigt einen ToolTip an der gewünschten Position an.
    ; Syntax.........: _ToolTip_Create($sText_Tip, [$iX = False, [$iY = False, [$iStyle_Tip = 0]]])
    ; Parameters ....: $sText_Tip - Text des ToolTips.
    ; $iX - [optional] X-Koordinate des ToolTips.
    ; $iY - [optional] Y-Koordinate des ToolTips.
    ; $iStyle_Tip - [optional] Stil des ToolTips. 0 = Abgerundetes Rechteck mit Pfeil nach unten.
    ; 1 = Abgerundetes Rechteck mit Pfeil nach oben.
    ; 2 = Rechteck mit kariertem Hintergrund.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Ein Leerstring als Text, löscht den zuvor gesetzten ToolTip.
    ; Werden keine Koordinaten angegeben, wird der ToolTip in die Nähe des Mauszeigers gesetzt.
    ; ===============================================================================================================================
    Func _ToolTip_Create($sText_Tip, $iX = False, $iY = False, $iStyle_Tip = 0)
    Switch $sText_Tip
    Case ""
    GUIRegisterMsg($WM_PAINT, "")
    GUISetState(@SW_HIDE, $hWnd_Tip)
    Case Else
    If $iX = False And $iY = False Then
    $iX = MouseGetPos(0)
    $iY = MouseGetPos(1)
    EndIf

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

    GUIRegisterMsg($WM_PAINT, "")
    $tLayout_Tip = _GDIPlus_GraphicsMeasureString($hGraphic_Tip, $sText_Tip, $hFont_Tip, _GDIPlus_RectFCreate(), $hFormat_Tip)

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

    Switch $iStyle_Tip
    Case 0
    $iWidth_Tip = DllStructGetData($tLayout_Tip[0], "width") + 6
    $iHeight_Tip = DllStructGetData($tLayout_Tip[0], "height") + 6
    $iX_Tip = 1
    $iY_Tip = 1
    DllStructSetData($tLayout_Tip[0], "x", $iX_Tip + 3)
    DllStructSetData($tLayout_Tip[0], "y", $iY_Tip + 3)

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

    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    $hBitmap_Tip = _GDIPlus_BitmapCreateFromGraphics($iWidth_Tip + $iX_Tip + 2, $iHeight_Tip + $iY_Tip + 13, $hGraphic_Tip)
    $hBuffer_Tip = _GDIPlus_ImageGetGraphicsContext($hBitmap_Tip)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer_Tip, 2)

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

    DllStructSetData($tSize, "X", $iWidth_Tip + $iX_Tip + 2)
    DllStructSetData($tSize, "Y", $iHeight_Tip + $iY_Tip + 13)
    DllStructSetData($tPoint, "X", $iX - DllStructGetData($tSize, "X") / 2)
    DllStructSetData($tPoint, "Y", $iY - DllStructGetData($tSize, "Y"))

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

    $hPath_Tip = _GDIPlus_PathCreate()
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -180, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iRadius_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 0, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip + $iHeight_Tip, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip + $iHeight_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip + $iHeight_Tip + 10)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip + $iHeight_Tip + 10, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip + $iHeight_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip, $iX_Tip, $iY_Tip + $iRadius_Tip)

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

    _GDIPlus_GraphicsFillPath($hBuffer_Tip, $hPath_Tip, $hBrush_BG_Tip)
    _GDIPlus_GraphicsDrawPath($hBuffer_Tip, $hPath_Tip, $hPen_Border_Tip)
    _GDIPlus_PathDispose($hPath_Tip)
    Case 1
    $iWidth_Tip = DllStructGetData($tLayout_Tip[0], "width") + 6
    $iHeight_Tip = DllStructGetData($tLayout_Tip[0], "height") + 6
    $iX_Tip = 1
    $iY_Tip = 12
    DllStructSetData($tLayout_Tip[0], "x", $iX_Tip + 3)
    DllStructSetData($tLayout_Tip[0], "y", $iY_Tip + 3)

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

    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    $hBitmap_Tip = _GDIPlus_BitmapCreateFromGraphics($iWidth_Tip + $iX_Tip + 2, $iHeight_Tip + $iY_Tip + 2, $hGraphic_Tip)
    $hBuffer_Tip = _GDIPlus_ImageGetGraphicsContext($hBitmap_Tip)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer_Tip, 2)

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

    DllStructSetData($tSize, "X", $iWidth_Tip + $iX_Tip + 2)
    DllStructSetData($tSize, "Y", $iHeight_Tip + $iY_Tip + 2)
    DllStructSetData($tPoint, "X", $iX - DllStructGetData($tSize, "X") / 2)
    DllStructSetData($tPoint, "Y", $iY)

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

    $hPath_Tip = _GDIPlus_PathCreate()
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -180, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip - 10)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip - 10, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iRadius_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 0, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip + $iHeight_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip, $iX_Tip, $iY_Tip + $iRadius_Tip)

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

    _GDIPlus_GraphicsFillPath($hBuffer_Tip, $hPath_Tip, $hBrush_BG_Tip)
    _GDIPlus_GraphicsDrawPath($hBuffer_Tip, $hPath_Tip, $hPen_Border_Tip)
    _GDIPlus_PathDispose($hPath_Tip)
    Case 2
    $iWidth_Tip = DllStructGetData($tLayout_Tip[0], "width") + 6
    $iHeight_Tip = DllStructGetData($tLayout_Tip[0], "height") + 6
    DllStructSetData($tLayout_Tip[0], "x", 3)
    DllStructSetData($tLayout_Tip[0], "y", 3)

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

    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    $hBitmap_Tip = _GDIPlus_BitmapCreateFromGraphics($iWidth_Tip, $iHeight_Tip, $hGraphic_Tip)
    $hBuffer_Tip = _GDIPlus_ImageGetGraphicsContext($hBitmap_Tip)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer_Tip, 2)

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

    DllStructSetData($tSize, "X", $iWidth_Tip)
    DllStructSetData($tSize, "Y", $iHeight_Tip)
    DllStructSetData($tPoint, "X", $iX)
    DllStructSetData($tPoint, "Y", $iY)

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

    _GDIPlus_GraphicsFillRect($hBuffer_Tip, 0, 0, $iWidth_Tip, $iHeight_Tip, $hBrush_Hatch_Tip)
    EndSwitch

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

    _GDIPlus_GraphicsDrawStringEx($hBuffer_Tip, $sText_Tip, $hFont_Tip, $tLayout_Tip[0], $hFormat_Tip, $hBrush_Text_Tip)
    __ToolTip_ReDraw()

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

    If BitAND(WinGetState($hWnd_Tip), 2) <> 2 Then GUISetState(@SW_SHOWNOACTIVATE, $hWnd_Tip)

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

    GUIRegisterMsg($WM_PAINT, "__ToolTip_ReDraw")
    EndSwitch

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

    EndFunc ;==>_ToolTip_Create

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: __ToolTip_ReDraw
    ; Description ...: Zeichnet den ToolTip neu.
    ; Syntax.........: __ToolTip_ReDraw()
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Intern genutzte Funktion.
    ; ===============================================================================================================================
    Func __ToolTip_ReDraw()
    Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Tip)
    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd_Tip, $hDC, $pPoint, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)
    EndFunc ;==>_ToolTip_ReDraw

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_BGSetColor
    ; Description ...: Ändert die Hintergundfarbe des ToolTips auf den gewünschten ARGB Farbwert ab.
    ; Syntax.........: _ToolTip_BGSetColor([$NewColor])
    ; Parameters ....: $NewColor - [optional] Neuer Farbwert im Format 0xAARRGGBB. Transparenz wird unterstützt.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Gilt nur für ToolTip Style 0/1.
    ; ===============================================================================================================================
    Func _ToolTip_BGSetColor($NewColor = 0xD0202020)
    _GDIPlus_BrushSetSolidColor($hBrush_BG_Tip, $NewColor)
    EndFunc ;==>_ToolTip_BGSetColor

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_TextSetColor
    ; Description ...: Ändert die Textfarbe des ToolTips auf den gewünschten ARGB Farbwert ab.
    ; Syntax.........: _ToolTip_TextSetColor([$NewColor])
    ; Parameters ....: $NewColor - [optional] Neuer Farbwert im Format 0xAARRGGBB. Transparenz wird unterstützt.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: -
    ; ===============================================================================================================================
    Func _ToolTip_TextSetColor($NewColor = 0xE0E0E0E0)
    _GDIPlus_BrushSetSolidColor($hBrush_Text_Tip, $NewColor)
    EndFunc ;==>_ToolTip_TextSetColor

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_BorderSetColor
    ; Description ...: Ändert die Randlinienfarbe des ToolTips auf den gewünschten ARGB Farbwert ab.
    ; Syntax.........: _ToolTip_BorderSetColor([$NewColor])
    ; Parameters ....: $NewColor - [optional] Neuer Farbwert im Format 0xAARRGGBB. Transparenz wird unterstützt.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Gilt nur für ToolTip Style 0/1.
    ; ===============================================================================================================================
    Func _ToolTip_BorderSetColor($NewColor = 0xE0E57913)
    _GDIPlus_PenSetColor($hPen_Border_Tip, $NewColor)
    EndFunc ;==>_ToolTip_BorderSetColor

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_BorderSetWidth
    ; Description ...: Ändert die Randliniendicke des ToolTips auf den gewünschten Dezimalwert ab.
    ; Syntax.........: _ToolTip_BorderSetWidth([$fWidth])
    ; Parameters ....: $fWidth - [optional] Neuer Wert.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Ein zu großer Wert kann Fehldarstellungen verursachen.
    ; Gilt nur für ToolTip Style 0/1.
    ; ===============================================================================================================================
    Func _ToolTip_BorderSetWidth($fWidth = 2)
    _GDIPlus_PenSetWidth($hPen_Border_Tip, $fWidth)
    EndFunc ;==>_ToolTip_BorderSetWidth

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_FontSetOptions
    ; Description ...: Ändert die Einstellungen für den Text des ToolTips.
    ; Syntax.........: _ToolTip_FontSetOptions($sFont = "Arial", $fSize = 10, $iStyle = 0)
    ; Parameters ....: $sFont - [optional] Schriftart des ToolTips.
    ; $fSize - [optional] Schriftgröße des ToolTips.
    ; $iStyle - [optional] Schriftstil des ToolTips. 0 = "Normal"; 1 = "Fett"; 2 = "Kursiv"; 4 = "Unterstrichen";
    ; 8 = "Durchgestrichen". Werte können kombiniert werden.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: -
    ; ===============================================================================================================================
    Func _ToolTip_FontSetOptions($sFont = "Arial", $fSize = 10, $iStyle = 0)
    _GDIPlus_FontFamilyDispose($hFamily_Tip)
    _GDIPlus_FontDispose($hFont_Tip)
    $hFamily_Tip = _GDIPlus_FontFamilyCreate($sFont)
    $hFont_Tip = _GDIPlus_FontCreate($hFamily_Tip, $fSize, $iStyle)
    EndFunc ;==>_ToolTip_FontSetOptions

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_HatchSetColors
    ; Description ...: Ändert die Einstellungen für den Text des ToolTips.
    ; Syntax.........: _ToolTip_HatchSetColors($ARGB_Lines = 0xD0D0D0D0, $ARGB_BG = 0xD0F0F0F0)
    ; Parameters ....: $ARGB_Lines - [optional] Linienfarbe des karierten ToolTipMusters.
    ; $ARGB_BG - [optional] Hintergrundfarbe des karierten ToolTipMusters.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Gilt nur für den ToolTip Style 2
    ; ===============================================================================================================================
    Func _ToolTip_HatchSetColors($ARGB_Lines = 0xD0D0D0D0, $ARGB_BG = 0xD0F0F0F0)
    _GDIPlus_BrushDispose($hBrush_Hatch_Tip)
    $hBrush_Hatch_Tip = _GDIPlus_HatchBrushCreate($HatchStyleCross, $ARGB_Lines, $ARGB_BG)
    EndFunc ;==>_ToolTip_FontSetOptions

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: __ToolTip_Shutdown
    ; Description ...: Entfernt die von der UDF verwendeten Ressourcen aus dem Arbeitsspeicher.
    ; Syntax.........: __ToolTip_Shutdown()
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Intern genutzte Funktion.
    ; ===============================================================================================================================
    Func __ToolTip_Shutdown()
    GUIRegisterMsg($WM_PAINT, "")
    _GDIPlus_GraphicsDispose($hGraphic_Tip)
    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    _GDIPlus_StringFormatDispose($hFormat_Tip)
    _GDIPlus_FontDispose($hFont_Tip)
    _GDIPlus_FontFamilyDispose($hFamily_Tip)
    _GDIPlus_BrushDispose($hBrush_BG_Tip)
    _GDIPlus_BrushDispose($hBrush_Text_Tip)
    _GDIPlus_BrushDispose($hBrush_Hatch_Tip)
    _GDIPlus_PenDispose($hPen_Border_Tip)
    _GDIPlus_Shutdown()
    EndFunc ;==>_ToolTip_Shutdown

    [/autoit]
    Beispiel neu
    [autoit]

    #include "ToolTipEx.au3"
    #include <GUIConstants.au3>

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

    _ToolTip_FontSetOptions("Courier New", 10)
    _ToolTip_TextSetColor(0xD0202020)

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

    Global $aText[8]
    $aText[0] = "Produced by:" & @CRLF & "name22"
    $aText[1] = "Written by:" & @CRLF & "name22"
    $aText[2] = "Eexcutive Director:" & @CRLF & "name22"
    $aText[3] = "Research:" & @CRLF & "name22"
    $aText[4] = "Publicity:" & @CRLF & "name22"
    $aText[5] = "Special Thanks To:" & @CRLF & "Higggiii" & @CRLF & "H112" & @CRLF & "UEZ"
    $aText[6] = "name22 Studios presents..."
    $aText[7] = "The ToolTip"

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

    $iCurText = 0

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

    $fTimer = TimerInit()

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

    While Sleep(30)
    Switch TimerDiff($fTimer) >= 2000
    Case False
    _ToolTip_Create($aText[$iCurText], 400, 400, 2)
    Case True
    For $iTransparency = 0 To 100 Step 10
    _ToolTip_TextSetColor("0x" & Hex(Round(208 / 100 * (100 - $iTransparency)), 2) & "020202")
    _ToolTip_Create($aText[$iCurText], 400, 400, 2)
    Sleep(30)
    Next
    Sleep(100)
    $iCurText += 1
    If $iCurText = 7 Then _ToolTip_FontSetOptions("Segoe Script", 14)
    If $iCurText = 8 Then
    _ToolTip_FontSetOptions("Courier New", 10)
    $iCurText = 0
    EndIf
    For $iTransparency = 0 To 100 Step 10
    _ToolTip_TextSetColor("0x" & Hex(Round(208 / 100 * $iTransparency), 2) & "020202")
    _ToolTip_Create($aText[$iCurText], 400, 400, 2)
    Sleep(30)
    Next
    $fTimer = TimerInit()
    EndSwitch
    WEnd

    [/autoit]
    Beispiel alt
    [autoit]

    #include <ToolTipEx.au3>
    #include <GUIConstants.au3>

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

    _ToolTip_FontSetOptions("Segoe Print", 8)

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

    $fTimer = TimerInit()

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

    While Sleep(30)
    $aMousePos = MouseGetPos()
    Switch TimerDiff($fTimer) >= 3000
    Case False
    _ToolTip_Create("MousePos:" & @CRLF & $aMousePos[0] & ":" & $aMousePos[1], $aMousePos[0], $aMousePos[1] - 15, 0)
    Case True
    _ToolTip_FontSetOptions("Segoe Script", 12)
    _ToolTip_TextSetColor(0xD0202020)
    For $iTransparency = 0 To 100
    $aMousePos = MouseGetPos()
    _ToolTip_Create("name22", $aMousePos[0], $aMousePos[1] - 15, 0)
    _ToolTip_BGSetColor("0x" & Hex(Floor(208 / 100 * (100 - $iTransparency)), 2) & "202020")
    _ToolTip_BorderSetColor("0x" & Hex(Floor(224 / 100 * (100 - $iTransparency)), 2) & "E57913")
    Sleep(30)
    Next
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Wert von Timerinit()

    • name22
    • 24. Dezember 2010 um 15:15

    Ja das sind Millisekunden, und mit TimerDiff($begin) kannst du auch die Zeitdifferenz seit dem Aufruf von $begin = TimerInit() errechnen ;).

  • Bilderinformationen auslesen

    • name22
    • 24. Dezember 2010 um 00:03

    Bitte was? ^^ Was soll mir "Bilderinformationen auslesen" sagen? "Ich möchte die Höhe und Breite eines Bildes auslesen." oder "Ich möchte das Datum eines Bildes auslesen." oder "Ich möchte die Auflösung eines Bildes auslesen.". Und was ist denn dieses Bild? Eine Datei oder ein HBITMAP Handle? Ich Tippe jetzt mal darauf, dass du Höhe und Breite einer Bilder Datei auslesen willst...
    Mit den GDI+ Funktionen _GDIPlus_ImageGetWidth und _GDIPlus_ImageGetHeight kannst du die Breite/Höhe eines Image Handles auslesen.

    [autoit]

    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()

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

    $hImage = _GDIPlus_ImageLoadFromFile(FileOpenDialog("Bild auswählen", @ScriptDir, "Alle Bilder (*.*)"))
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight= _GDIPlus_ImageGetHeight($hImage)

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

    MsgBox(64, "Info", "Das Bild ist " & $iWidth & " Pixel Breit und " & $iHeight & " Pixel hoch.")

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

    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

    [/autoit]
  • GDI+ Abgerundetes Rechteck

    • name22
    • 23. Dezember 2010 um 22:37

    UEZ Das sieht meinem ja ziemlich ähnlich... Ich bleibe aber trotzdem bei meiner Version :P.

  • GDI+ Abgerundetes Rechteck

    • name22
    • 23. Dezember 2010 um 22:18

    Ich glaube jemand hat hier im Forum schon mal eine Funktion dafür geschrieben... Aber da ich sie nicht mehr finden konnte und nicht weiß ob andere die die Funktion benötigen aber nicht finden können, habe ich mir meine eigene sehr gute Funktion für abgerundete Rechtecke geschrieben. :D Es gibt 2 Versionen, eine als _PathAdd... Funktion für GDIP Benutzer und eine als normales _GraphicsDraw/Fill.

    Abgerundetes Rechteck
    [autoit]

    ;Author: name22 (autoit.de)
    Func _GDIPlus_PathAddRoundRect($hPath, $nX, $nY, $nWidth, $nHeight, $nRadius)
    $hPathAddTmp = _GDIPlus_PathCreate()
    _GDIPlus_PathAddArc($hPathAddTmp, $nX, $nY, $nRadius * 2, $nRadius * 2, -180, 90)
    _GDIPlus_PathAddLine($hPathAddTmp, $nX + $nRadius, $nY, $nX + $nWidth - $nRadius, $nY)
    _GDIPlus_PathAddArc($hPathAddTmp, $nX + $nWidth - $nRadius * 2, $nY, $nRadius * 2, $nRadius * 2, -90, 90)
    _GDIPlus_PathAddLine($hPathAddTmp, $nX + $nWidth, $nY + $nRadius, $nX + $nWidth, $nY + $nHeight - $nRadius)
    _GDIPlus_PathAddArc($hPathAddTmp, $nX + $nWidth - $nRadius * 2, $nY + $nHeight - $nRadius * 2, $nRadius * 2, $nRadius * 2, 0, 90)
    _GDIPlus_PathAddLine($hPathAddTmp, $nX + $nRadius, $nY + $nHeight, $nX + $nWidth - $nRadius, $nY + $nHeight)
    _GDIPlus_PathAddArc($hPathAddTmp, $nX, $nY + $nHeight - $nRadius * 2, $nRadius * 2, $nRadius * 2, 90, 90)
    _GDIPlus_PathAddLine($hPathAddTmp, $nX, $nY + $nHeight - $nRadius, $nX, $nY + $nRadius)
    _GDIPlus_PathAddPath($hPath, $hPathAddTmp, False)
    EndFunc

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

    Func _GDIPlus_GraphicsDrawRoundRect($hGraphics, $nX, $nY, $nWidth, $nHeight, $nRadius, $hPen = 0)
    _GDIPlus_GraphicsDrawArc($hGraphics, $nX, $nY, $nRadius * 2, $nRadius * 2, -180, 90, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $nX + $nRadius, $nY, $nX + $nWidth - $nRadius, $nY, $hPen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $nX + $nWidth - $nRadius * 2, $nY, $nRadius * 2, $nRadius * 2, -90, 90, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $nX + $nWidth, $nY + $nRadius, $nX + $nWidth, $nY + $nHeight - $nRadius, $hPen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $nX + $nWidth - $nRadius * 2, $nY + $nHeight - $nRadius * 2, $nRadius * 2, $nRadius * 2, 0, 90, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $nX + $nRadius, $nY + $nHeight, $nX + $nWidth - $nRadius, $nY + $nHeight, $hPen)
    _GDIPlus_GraphicsDrawArc($hGraphics, $nX, $nY + $nHeight - $nRadius * 2, $nRadius * 2, $nRadius * 2, 90, 90, $hPen)
    _GDIPlus_GraphicsDrawLine($hGraphics, $nX, $nY + $nHeight - $nRadius, $nX, $nY + $nRadius, $hPen)
    EndFunc

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

    Func _GDIPlus_GraphicsFillRoundRect($hGraphics, $nX, $nY, $nWidth, $nHeight, $nRadius, $hBrush = 0)
    _GDIPlus_GraphicsFillPie($hGraphics, $nX, $nY, $nRadius * 2, $nRadius * 2, -180, 90, $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphics, $nX + $nRadius - 1, $nY, $nWidth - $nRadius * 2 + 2, $nRadius, $hBrush)
    _GDIPlus_GraphicsFillPie($hGraphics, $nX + $nWidth - $nRadius * 2, $nY, $nRadius * 2, $nRadius * 2, -90, 90, $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphics, $nX + $nWidth - $nRadius, $nY + $nRadius - 1, $nRadius, $nHeight - $nRadius * 2 + 2, $hBrush)
    _GDIPlus_GraphicsFillPie($hGraphics, $nX + $nWidth - $nRadius * 2, $nY + $nHeight - $nRadius * 2, $nRadius * 2, $nRadius * 2, 0, 90, $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphics, $nX + $nRadius - 1, $nY + $nHeight - $nRadius, $nWidth - $nRadius * 2 + 2, $nRadius, $hBrush)
    _GDIPlus_GraphicsFillPie($hGraphics, $nX, $nY + $nHeight - $nRadius * 2, $nRadius * 2, $nRadius * 2, 90, 90, $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphics, $nX, $nY + $nRadius - 1, $nRadius, $nHeight - $nRadius * 2 + 2, $hBrush)
    _GDIPlus_GraphicsFillRect($hGraphics, $nX + $nRadius - 1, $nY + $nRadius - 1, $nWidth - $nRadius * 2 + 2, $nHeight - $nRadius * 2 + 2, $hBrush)
    EndFunc

    [/autoit]
  • UDF: ToolTips für Slider Controls

    • name22
    • 23. Dezember 2010 um 20:49
    Zitat

    Vielleicht kann man das ja noch unter Umständen so ausbauen, das mein wie bei YouTube einen eigenen ToolTip benutzen kann. Also vom Style her. Ich hoffe du verstehste was ich meine.


    Das ist eine prima Idee, aber dann muss ich auch noch eine eigene ToolTip Funktion schreiben.... Ich werd mal sehen ob ich das hinbekomme. ;)

  • UDF: ToolTips für Slider Controls

    • name22
    • 23. Dezember 2010 um 19:58

    Irgendjemand hat in der Shoutbox gefragt, wie man einen ToolTip bei einem Slider Control anzeigen lassen kann wenn man mit der Maus über die SliderBar fährt (also ohne das Control anzuklicken oder dessen Wert zu verändern) à la Youtube Player.
    Ich habe mal ein wenig damit herumexperimentiert, und dabei ist diese UDF herausgekommen... Sie ist nicht sehr vollständig und Beschreibungen fehlen auch, aber das kann ich ja bei Bedarf noch hinzufügen. Vertikale Slider werden leider noch nicht unterstützt. :( Ein Beispiel ist vorhanden. Ich würde mich über konstruktive Kritik und/oder Verbesserungsvorschläge freuen. :)

    Neue Features:
    - 3ter Parameter um einen Text statt dem Wert des Sliders anzeigen zu lassen. (Idee: hellboy3) :).
    - 4ter Parameter um den bei $sText angegebenen String als Funktion aufzurufen und ihren Rückgabewert im ToolTip anzuzeigen. (Idee: L3viathan) :).
    - 5ter Parameter um festzulegen, ob der ToolTip auch bei inaktivem Fenster (Fokusverlust) angezeigt werden soll. (Idee: hellboy3).

    UDF (normaler ToolTip)
    [autoit]

    #include-once
    #include <GUISlider.au3>
    #include <WinApi.au3>
    #include <Array.au3>

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

    ;SliderTip.au3 UDF by name22 (autoit.de)

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

    Global $aRegisteredSlider[1][10]
    $aRegisteredSlider[0][0] = 0

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

    ; #FUNCTION# ;===============================================================================
    ; Name...........: _SliderTip_RegisterToolTip
    ; Description ...: Erzeugt einen ToolTip an der Mausposition, sobald diese sich über dem angegebenen Slider-Control befindet.
    ; Ist $sText = "" dann wird der Wert des Sliders an der Position der Maus berechnet und als Text für den ToolTip
    ; verwendet.
    ; Syntax.........: _SliderTip_RegisterToolTip($cSliderRegister, $hWndSlider, [$sText = "", [$bCall = False]])
    ; Parameters ....: $cSliderRegister - Control-ID des Sliders.
    ; $hWndSlider - Handle des Fensters, in dem sich der Slider befindet.
    ; $sText - [optional] Text, der anstatt dem Slider Wert im ToolTip angezeigt werden soll.
    ; Standard = "".
    ; $bCall - [optional] Falls True, dann wird der Rückgabewert der bei $sText angegebenen Funktion im
    ; ToolTip angezeigt.
    ; $bHideInactive - [oprional] Falls True, dann wird kein ToolTip angezeigt wenn das Fenster den Fokus verliert.
    ; Return values .: None
    ; Author ........: name22 @autoit.de
    ; Remarks .......:
    ; Example .......; Yes
    ; ;==========================================================================================
    Func _SliderTip_RegisterToolTip($cSliderRegister, $hWndSlider, $sText = "", $bCall = False, $bHideInactive = False)
    $aRegisteredSlider[0][0] += 1
    ReDim $aRegisteredSlider[$aRegisteredSlider[0][0] + 1][10]

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

    $aSliderPos = ControlGetPos($hWndSlider, "", $cSliderRegister)
    $aSliderChannelRectTmp = _GUICtrlSlider_GetChannelRect($cSliderRegister)
    $aRange = _GUICtrlSlider_GetRange($cSliderRegister)
    $VPP = Abs($aRange[0] - $aRange[1]) / Abs($aSliderChannelRectTmp[0] - $aSliderChannelRectTmp[2])

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

    $aRegisteredSlider[$aRegisteredSlider[0][0]][0] = $cSliderRegister
    $aRegisteredSlider[$aRegisteredSlider[0][0]][1] = $aSliderChannelRectTmp[0] + $aSliderPos[0]
    $aRegisteredSlider[$aRegisteredSlider[0][0]][2] = $aSliderChannelRectTmp[1] + $aSliderPos[1] - 7
    $aRegisteredSlider[$aRegisteredSlider[0][0]][3] = $aSliderChannelRectTmp[2] + $aSliderPos[0]
    $aRegisteredSlider[$aRegisteredSlider[0][0]][4] = $aSliderChannelRectTmp[3] + $aSliderPos[1] + 5
    $aRegisteredSlider[$aRegisteredSlider[0][0]][5] = $VPP
    $aRegisteredSlider[$aRegisteredSlider[0][0]][6] = $hWndSlider
    $aRegisteredSlider[$aRegisteredSlider[0][0]][7] = $sText
    $aRegisteredSlider[$aRegisteredSlider[0][0]][8] = $bCall
    $aRegisteredSlider[$aRegisteredSlider[0][0]][9] = $bHideInactive

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

    AdlibRegister("_SliderTip_AdlibRegister", 30)
    EndFunc ;==>_SliderTip_RegisterToolTip

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

    ;Deregistriert einen Slider.
    Func _SliderTip_UnRegisterToolTip($cSliderUnRegister, $hWndSlider)
    If $aRegisteredSlider[0][0] = 0 Then Return 0
    Local $bSliderExists = False

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

    For $i = 1 To $aRegisteredSlider[0][0]
    If $aRegisteredSlider[$i][0] = $cSliderUnRegister And $aRegisteredSlider[$i][6] = $hWndSlider Then
    _ArrayDelete($aRegisteredSlider, $i)
    $bSliderExists = True
    ExitLoop
    EndIf
    Next

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

    If $bSliderExists = False Then Return 0

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

    $aRegisteredSlider[0][0] -= 1
    If $aRegisteredSlider[0][0] = 0 Then AdlibUnRegister("_SliderTip_AdlibRegister")

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

    Return 1
    EndFunc ;==>_SliderTip_UnRegisterToolTip

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

    Func _SliderTip_AdlibRegister()
    Local $bToolTip = False, $aWinPos[2], $aRangeSlider, $tMousePos_Client, $tMousePos_Screen

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

    For $i = 1 To $aRegisteredSlider[0][0]
    $tMousePos_Client = _WinAPI_GetMousePos(True, $aRegisteredSlider[$i][6])
    $tMousePos_Screen = _WinAPI_GetMousePos()
    If DllStructGetData($tMousePos_Client, "X") >= $aRegisteredSlider[$i][1] And DllStructGetData($tMousePos_Client, "Y") >= $aRegisteredSlider[$i][2] And DllStructGetData($tMousePos_Client, "X") <= $aRegisteredSlider[$i][3] And DllStructGetData($tMousePos_Client, "Y") <= $aRegisteredSlider[$i][4] Then
    If _WinAPI_GetForegroundWindow() = $aRegisteredSlider[$i][6] Or $aRegisteredSlider[$i][9] = False Then
    $aWinPos[0] = DllStructGetData($tMousePos_Screen, "X") - DllStructGetData($tMousePos_Client, "X")
    $aWinPos[1] = DllStructGetData($tMousePos_Screen, "Y") - DllStructGetData($tMousePos_Client, "Y")
    $aRangeSlider = _GUICtrlSlider_GetRange($aRegisteredSlider[$i][0])

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

    Switch $aRegisteredSlider[$i][7]
    Case ""
    ToolTip(Round($aRangeSlider[0] + (DllStructGetData($tMousePos_Client, "X") - $aRegisteredSlider[$i][1]) * $aRegisteredSlider[$i][5]), DllStructGetData($tMousePos_Screen, "X"), $aWinPos[1] + $aRegisteredSlider[$i][2] - 20)
    Case Else
    Switch $aRegisteredSlider[$i][8]
    Case False
    ToolTip($aRegisteredSlider[$i][7], DllStructGetData($tMousePos_Screen, "X"), $aWinPos[1] + $aRegisteredSlider[$i][2] - 20)
    Case True
    ToolTip(Call($aRegisteredSlider[$i][7]), DllStructGetData($tMousePos_Screen, "X"), $aWinPos[1] + $aRegisteredSlider[$i][2] - 20)
    EndSwitch
    EndSwitch

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

    $bToolTip = True
    EndIf
    EndIf
    Next

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

    If Not $bToolTip Then ToolTip("")
    EndFunc ;==>_SliderTip_AdlibRegister

    [/autoit]
    UDF (Custom ToolTip)
    [autoit]

    #include-once
    #include <GUISlider.au3>
    #include <WinApi.au3>
    #include <Array.au3>
    #include "ToolTipEx.au3"

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

    ;SliderTipEx.au3 UDF by name22 @autoit.de (ToolTipEx.au3 by name22 required)

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

    Global $aRegisteredSlider[1][10]
    $aRegisteredSlider[0][0] = 0

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

    ; #FUNCTION# ;===============================================================================
    ; Name...........: _SliderTip_RegisterToolTip
    ; Description ...: Erzeugt einen ToolTip an der Mausposition, sobald diese sich über dem angegebenen Slider-Control befindet.
    ; Ist $sText = "" dann wird der Wert des Sliders an der Position der Maus berechnet und als Text für den ToolTip
    ; verwendet.
    ; Syntax.........: _SliderTip_RegisterToolTip($cSliderRegister, $hWndSlider, [$sText = "", [$bCall = False]])
    ; Parameters ....: $cSliderRegister - Control-ID des Sliders.
    ; $hWndSlider - Handle des Fensters, in dem sich der Slider befindet.
    ; $sText - [optional] Text, der anstatt dem Slider Wert im ToolTip angezeigt werden soll.
    ; Standard = "".
    ; $bCall - [optional] Falls True, dann wird der Rückgabewert der bei $sText angegebenen Funktion im
    ; ToolTip angezeigt.
    ; $bHideInactive - [oprional] Falls True, dann wird kein ToolTip angezeigt wenn das Fenster den Fokus verliert.
    ; Return values .: None
    ; Author ........: name22 @autoit.de
    ; Remarks .......:
    ; Example .......; Yes
    ; ;==========================================================================================
    Func _SliderTip_RegisterToolTip($cSliderRegister, $hWndSlider, $sText = "", $bCall = False, $bHideInactive = False)
    $aRegisteredSlider[0][0] += 1
    ReDim $aRegisteredSlider[$aRegisteredSlider[0][0] + 1][10]

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

    $aSliderPos = ControlGetPos($hWndSlider, "", $cSliderRegister)
    $aSliderChannelRectTmp = _GUICtrlSlider_GetChannelRect($cSliderRegister)
    $aRange = _GUICtrlSlider_GetRange($cSliderRegister)
    $VPP = Abs($aRange[0] - $aRange[1]) / Abs($aSliderChannelRectTmp[0] - $aSliderChannelRectTmp[2])

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

    $aRegisteredSlider[$aRegisteredSlider[0][0]][0] = $cSliderRegister
    $aRegisteredSlider[$aRegisteredSlider[0][0]][1] = $aSliderChannelRectTmp[0] + $aSliderPos[0]
    $aRegisteredSlider[$aRegisteredSlider[0][0]][2] = $aSliderChannelRectTmp[1] + $aSliderPos[1] - 7
    $aRegisteredSlider[$aRegisteredSlider[0][0]][3] = $aSliderChannelRectTmp[2] + $aSliderPos[0]
    $aRegisteredSlider[$aRegisteredSlider[0][0]][4] = $aSliderChannelRectTmp[3] + $aSliderPos[1] + 5
    $aRegisteredSlider[$aRegisteredSlider[0][0]][5] = $VPP
    $aRegisteredSlider[$aRegisteredSlider[0][0]][6] = $hWndSlider
    $aRegisteredSlider[$aRegisteredSlider[0][0]][7] = $sText
    $aRegisteredSlider[$aRegisteredSlider[0][0]][8] = $bCall
    $aRegisteredSlider[$aRegisteredSlider[0][0]][9] = $bHideInactive

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

    AdlibRegister("_SliderTip_AdlibRegister", 30)
    EndFunc ;==>_SliderTip_RegisterToolTip

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

    ;Deregistriert einen Slider.
    Func _SliderTip_UnRegisterToolTip($cSliderUnRegister, $hWndSlider)
    If $aRegisteredSlider[0][0] = 0 Then Return 0
    Local $bSliderExists = False

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

    For $i = 1 To $aRegisteredSlider[0][0]
    If $aRegisteredSlider[$i][0] = $cSliderUnRegister And $aRegisteredSlider[$i][6] = $hWndSlider Then
    _ArrayDelete($aRegisteredSlider, $i)
    $bSliderExists = True
    ExitLoop
    EndIf
    Next

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

    If $bSliderExists = False Then Return 0

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

    $aRegisteredSlider[0][0] -= 1
    If $aRegisteredSlider[0][0] = 0 Then AdlibUnRegister("_SliderTip_AdlibRegister")

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

    Return 1
    EndFunc ;==>_SliderTip_UnRegisterToolTip

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

    Func _SliderTip_AdlibRegister()
    Local $bToolTip = False, $aWinPos[2], $aRangeSlider, $tMousePos_Client, $tMousePos_Screen

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

    For $i = 1 To $aRegisteredSlider[0][0]
    $tMousePos_Client = _WinAPI_GetMousePos(True, $aRegisteredSlider[$i][6])
    $tMousePos_Screen = _WinAPI_GetMousePos()
    If DllStructGetData($tMousePos_Client, "X") >= $aRegisteredSlider[$i][1] And DllStructGetData($tMousePos_Client, "Y") >= $aRegisteredSlider[$i][2] And DllStructGetData($tMousePos_Client, "X") <= $aRegisteredSlider[$i][3] And DllStructGetData($tMousePos_Client, "Y") <= $aRegisteredSlider[$i][4] Then
    If _WinAPI_GetForegroundWindow() = $aRegisteredSlider[$i][6] Or $aRegisteredSlider[$i][9] = False Then
    $aWinPos[0] = DllStructGetData($tMousePos_Screen, "X") - DllStructGetData($tMousePos_Client, "X")
    $aWinPos[1] = DllStructGetData($tMousePos_Screen, "Y") - DllStructGetData($tMousePos_Client, "Y")
    $aRangeSlider = _GUICtrlSlider_GetRange($aRegisteredSlider[$i][0])

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

    Switch $aRegisteredSlider[$i][7]
    Case ""
    _ToolTip_Create(Round($aRangeSlider[0] + (DllStructGetData($tMousePos_Client, "X") - $aRegisteredSlider[$i][1]) * $aRegisteredSlider[$i][5]), DllStructGetData($tMousePos_Screen, "X"), $aWinPos[1] + $aRegisteredSlider[$i][2])
    Case Else
    Switch $aRegisteredSlider[$i][8]
    Case False
    _ToolTip_Create($aRegisteredSlider[$i][7], DllStructGetData($tMousePos_Screen, "X"), $aWinPos[1] + $aRegisteredSlider[$i][2])
    Case True
    _ToolTip_Create(Call($aRegisteredSlider[$i][7]), DllStructGetData($tMousePos_Screen, "X"), $aWinPos[1] + $aRegisteredSlider[$i][2])
    EndSwitch
    EndSwitch

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

    $bToolTip = True
    EndIf
    EndIf
    Next

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

    If Not $bToolTip Then _ToolTip_Create("")
    EndFunc ;==>_SliderTip_AdlibRegister

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

    Func _WinGetClientPos($hWnd) ; - Author: name22 (http://www.autoit.de)
    Local $aReturn[2]
    Local $iOptMouseCoord = Opt("MouseCoordMode", 1)

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

    Local $aMousePosAbs = MouseGetPos()
    Local $aMousePosRel = GUIGetCursorInfo($hWnd)

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

    Opt("MouseCoordMode", $iOptMouseCoord)

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

    $aReturn[0] = $aMousePosAbs[0] - $aMousePosRel[0]
    $aReturn[1] = $aMousePosAbs[1] - $aMousePosRel[1]

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

    Return $aReturn
    EndFunc ;==>_WinGetClientPos

    [/autoit]
    Beispiel
    [autoit]

    #include <GUIConstants.au3>
    #include "SliderTip.au3"

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

    $hWnd = GUICreate("SliderTip Beispiel by name22 (autoit.de)", 400, 130)
    $cSlider1 = GUICtrlCreateSlider(5, 5, 390, 40)
    GUICtrlSetLimit(-1, 500, 0)
    $cSlider2 = GUICtrlCreateSlider(5, 45, 390, 40)
    GUICtrlSetLimit(-1, 600, 50)
    $cSlider3 = GUICtrlCreateSlider(5, 85, 390, 40)
    GUICtrlSetLimit(-1, 300, 100)
    GUISetState()

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

    _SliderTip_RegisterToolTip($cSlider1, $hWnd)
    _SliderTip_RegisterToolTip($cSlider2, $hWnd, "AutoIt!", False, True)
    _SliderTip_RegisterToolTip($cSlider3, $hWnd, "_Time", True)

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

    While 1
    Switch GUIGetMsg(0)
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _Time()
    Return @SEC
    EndFunc

    [/autoit]


    Update: Alternative Version mit dem ToolTip aus meiner neuen UDF (GDIP.au3 findet ihr im Thread zum ToolTip ;)).

    Dateien

    SliderTip.au3 5,4 kB – 513 Downloads Beispiel.au3 708 Byte – 485 Downloads
  • Bitmap invertieren

    • name22
    • 23. Dezember 2010 um 16:50

    Hier mal ein beispiel mit einer FarbMatrix ;).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIP.au3>

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

    $hWnd = GUICreate("Inverted Bitmap by name22 (autoit.de)", 600, 400)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hInvIA = _GDIPlus_ImageAttributesCreate()

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

    $hImage = _GDIPlus_ImageLoadFromFile(FileOpenDialog("Bild auswählen", @ScriptDir, "All Images (*.*)"))
    $aImageDim = _GDIPlus_ImageGetDimension($hImage)

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

    $tColorMatrix = _GDIPlus_ColorMatrixCreateNegative()
    $pColorMatrix = DllStructGetPtr($tColorMatrix)

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

    _GDIPlus_ImageAttributesSetColorMatrix($hInvIA, 0, True, $pColorMatrix)

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

    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphic, $hImage, 0, 0, $aImageDim[0], $aImageDim[1], 0, 0, 600, 400, $hInvIA)

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

    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

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

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageAttributesDispose($hInvIA)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

    [/autoit]


    Das ist wesentlich schneller als die Pixel mit BitmapLockBits o.Ä. zu bearbeiten. :P
    Allerdings wird dazu noch die GDIP.au3 benötigt die hier irgendwo im Forum herumschwirrt :S .

  • Programm ausführen, das normalerweise mit einer verknüpfung gestartet wird

    • name22
    • 23. Dezember 2010 um 15:58

    Mach doch mal einen Screenshot von den Eigenschaften der Verknüpfung.

  • Programm ausführen, das normalerweise mit einer verknüpfung gestartet wird

    • name22
    • 23. Dezember 2010 um 15:47

    In der Hilfe zu Run steht wie du Parameter übergibst ;).

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™