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

Beiträge von AndyTR

  • Tacho/Uhr - Analogzeiger

    • AndyTR
    • 21. Juni 2011 um 18:05

    In den AutoIt-Beispielen ist sogar eine Anlog-Uhr dabei, ist mir eingefallen...
    Hier der Code, kannste aber auch einfach i den Examples rumsuchen

    Spoiler anzeigen
    [autoit]

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

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

    Opt("MustDeclareVars", 1)

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

    ; ===============================================================================================================================
    ; Description ...: Simple clock using layered windows
    ; Author ........: Paul Campbell (PaulIA)
    ; Notes .........:
    ; ===============================================================================================================================

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

    ; ===============================================================================================================================
    ; Global constants
    ; ===============================================================================================================================

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

    Global Const $iCenter = 200
    Global Const $iDotOpacity = 250
    Global Const $iHourRad = 140
    Global Const $iMinRad = 200
    Global Const $iOpacity = 128
    Global Const $nPI = 3.1415926535897932384626433832795
    Global Const $iRadius = 200
    Global Const $iSecRad = 200
    Global Const $iTickLen = 0.02

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

    Global Const $AC_SRC_ALPHA = 1

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

    Global Enum $eScrDC=0, $eMemDC, $eBitmap, $eWidth, $eHeight, $eGraphic, $ePen, $eCap, $eBrush, $eFormat, $eFamily, $eFont, $eLayout, $eLast

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

    ; ===============================================================================================================================
    ; Global variables
    ; ===============================================================================================================================

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

    Global $hDial, $hTime, $hHour, $hMin, $hSec, $hDot, $aTime, $aHour, $aMin, $aSec, $aCurr[3][2], $aLast[3][2]

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

    ; ===============================================================================================================================
    ; Main
    ; ===============================================================================================================================

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

    ClockInit()
    DialDraw ()
    Draw ()
    DotDraw ()
    ClockLoop()
    ClockDone()

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

    ; ===============================================================================================================================
    ; Finalize clock
    ; ===============================================================================================================================
    Func ClockDone()
    ; Finalize GDI+ resources
    TimeDone()
    HourDone()
    MinDone ()
    SecDone ()

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

    ; Finalize GDI+ library
    _GDIPlus_Shutdown()
    EndFunc

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

    ; ===============================================================================================================================
    ; Initialize clock
    ; ===============================================================================================================================
    Func ClockInit()
    Local $iX, $iY

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

    ; Calculate the dial frame caption size
    $iX = -(_WinAPI_GetSystemMetrics($SM_CXFRAME))
    $iY = -(_WinAPI_GetSystemMetrics($SM_CYCAPTION) + _WinAPI_GetSystemMetrics($SM_CYFRAME))

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

    ; Allocate the window resources
    $hDial = GUICreate("Clock", $iRadius * 2, $iRadius * 2, -1, -1, 0, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
    GUISetState()
    $hTime = GUICreate("Time" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
    GUISetState()
    $hHour = GUICreate("Hour" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
    GUISetState()
    $hMin = GUICreate("Min" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
    GUISetState()
    $hSec = GUICreate("Sec" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
    GUISetState()
    $hDot = GUICreate("Dot" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
    GUISetState()

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

    ; Initialize GDI+ library
    _GDIPlus_Startup()

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

    ; Initialize GDI+ resources
    TimeInit()
    HourInit()
    MinInit ()
    SecInit ()

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

    ; Hook non client hit test message so we can move the clock
    GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
    EndFunc

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

    ; ===============================================================================================================================
    ; Loop until user exits
    ; ===============================================================================================================================
    Func ClockLoop()
    do
    Draw()
    until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the center dot
    ; ===============================================================================================================================
    Func DotDraw()
    Local $aDot

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

    $aDot = ResourceInit($iRadius * 2, $iRadius * 2)
    _GDIPlus_GraphicsFillEllipse($aDot[$eGraphic], $iRadius-10, $iRadius-10, 20, 20)
    ResourceSet ($hDot, $aDot, $iDotOpacity)
    ResourceDone($aDot)
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the clock elements
    ; ===============================================================================================================================
    Func Draw()
    ; Calculate current time element position
    $aLast = $aCurr
    $aCurr[0][0] = $iCenter + Cos(TimeToRadians("sec" )) * $iSecRad
    $aCurr[0][1] = $iCenter - Sin(TimeToRadians("sec" )) * $iSecRad
    $aCurr[1][0] = $iCenter + Cos(TimeToRadians("min" )) * $iMinRad
    $aCurr[1][1] = $iCenter - Sin(TimeToRadians("min" )) * $iMinRad
    $aCurr[2][0] = $iCenter + Cos(TimeToRadians("hour")) * $iHourRad
    $aCurr[2][1] = $iCenter - Sin(TimeToRadians("hour")) * $iHourRad

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

    ; Draw time elements
    TimeDraw()
    HourDraw()
    MinDraw ()
    SecDraw ()
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the clock dial
    ; ===============================================================================================================================
    Func DialDraw()
    Local $aDial, $hPen1, $hPen2, $iI, $iN, $iX1, $iY1, $iX2, $iY2

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

    $aDial = ResourceInit($iRadius * 2, $iRadius * 2)
    $hPen1 = _GDIPlus_PenCreate()
    $hPen2 = _GDIPlus_PenCreate(0xFF0000FF, 4)
    for $iI = 0 to 2 * $nPI Step $nPI / 30
    $iX1 = $iCenter + Cos($iI) * ($iRadius * (1.00 - $iTickLen))
    $iY1 = $iCenter - Sin($iI) * ($iRadius * (1.00 - $iTickLen))
    $iX2 = $iCenter + Cos($iI) * $iRadius
    $iY2 = $iCenter - Sin($iI) * $iRadius
    if Mod($iN, 5) = 0 then
    _GDIPlus_GraphicsDrawLine($aDial[$eGraphic], $iX1, $iY1, $iX2, $iY2, $hPen2)
    else
    _GDIPlus_GraphicsDrawLine($aDial[$eGraphic], $iX1, $iY1, $iX2, $iY2, $hPen1)
    endif
    $iN += 1
    next
    _GDIPlus_PenDispose($hPen2)
    _GDIPlus_PenDispose($hPen1)

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

    ResourceSet ($hDial, $aDial)
    ResourceDone($aDial)
    EndFunc

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

    ; ===============================================================================================================================
    ; Finalize resources for the hour hand
    ; ===============================================================================================================================
    Func HourDone()
    _GDIPlus_PenDispose($aHour[$ePen])
    _GDIPlus_ArrowCapDispose($aHour[$eCap])
    ResourceDone($aHour)
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the hour hand
    ; ===============================================================================================================================
    Func HourDraw()
    if ($aLast[2][0] = $aCurr[2][0]) and ($aLast[2][1] = $aCurr[2][1]) then Return
    _GDIPlus_GraphicsDrawLine($aHour[$eGraphic], $iCenter, $iCenter, $aCurr[2][0], $aCurr[2][1], $aHour[$ePen])
    ResourceSet($hHour, $aHour)
    EndFunc

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

    ; ===============================================================================================================================
    ; Initialize resources for the hour hand
    ; ===============================================================================================================================
    Func HourInit()
    $aHour = ResourceInit($iRadius * 2, $iRadius * 2)
    $aHour[$ePen] = _GDIPlus_PenCreate(0xFFFF00FF)
    $aHour[$eCap] = _GDIPlus_ArrowCapCreate($iHourRad / 2, 8)
    _GDIPlus_PenSetCustomEndCap($aHour[$ePen], $aHour[$eCap])
    EndFunc

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

    ; ===============================================================================================================================
    ; Finalize resources for the minute hand
    ; ===============================================================================================================================
    Func MinDone()
    _GDIPlus_PenDispose($aMin[$ePen])
    _GDIPlus_ArrowCapDispose($aMin[$eCap])
    ResourceDone($aMin)
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the minute hand
    ; ===============================================================================================================================
    Func MinDraw()
    if ($aLast[1][0] = $aCurr[1][0]) and ($aLast[1][1] = $aCurr[1][1]) then Return
    _GDIPlus_GraphicsFillRect($aMin[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
    _GDIPlus_GraphicsDrawLine($aMin[$eGraphic], $iCenter, $iCenter, $aCurr[1][0], $aCurr[1][1], $aMin[$ePen])
    ResourceSet($hMin, $aMin)
    EndFunc

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

    ; ===============================================================================================================================
    ; Initialize resources for the minute hand
    ; ===============================================================================================================================
    Func MinInit()
    $aMin = ResourceInit($iRadius * 2, $iRadius * 2)
    $aMin[$ePen] = _GDIPlus_PenCreate(0xFFFF0000)
    $aMin[$eCap] = _GDIPlus_ArrowCapCreate($iMinRad / 2, 8)
    _GDIPlus_PenSetCustomEndCap($aMin[$ePen], $aMin[$eCap])
    EndFunc

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

    ; ===============================================================================================================================
    ; Finalize resources for the second hand
    ; ===============================================================================================================================
    Func SecDone()
    _GDIPlus_PenDispose($aSec[$ePen])
    ResourceDone($aSec)
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the second hand
    ; ===============================================================================================================================
    Func SecDraw()
    if ($aLast[0][0] = $aCurr[0][0]) and ($aLast[0][1] = $aCurr[0][1]) then Return
    _GDIPlus_GraphicsFillRect($aSec[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
    _GDIPlus_GraphicsDrawLine($aSec[$eGraphic], $iCenter, $iCenter, $aCurr[0][0], $aCurr[0][1], $aSec[$ePen])
    ResourceSet($hSec, $aSec)
    EndFunc

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

    ; ===============================================================================================================================
    ; Initialize resources for the second hand
    ; ===============================================================================================================================
    Func SecInit()
    $aSec = ResourceInit($iRadius * 2, $iRadius * 2)
    $aSec[$ePen] = _GDIPlus_PenCreate(0xFF000000)
    EndFunc

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

    ; ===============================================================================================================================
    ; Finalize drawing resources
    ; ===============================================================================================================================
    Func ResourceDone(ByRef $aInfo)
    _GDIPlus_GraphicsDispose($aInfo[$eGraphic])
    _WinAPI_ReleaseDC (0, $aInfo[$eScrDC])
    _WinAPI_DeleteObject($aInfo[$eBitmap])
    _WinAPI_DeleteDC ($aInfo[$eMemDC ])
    EndFunc

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

    ; ===============================================================================================================================
    ; Initialize bitmap resources
    ; ===============================================================================================================================
    Func ResourceInit($iWidth, $iHeight)
    Local $aInfo[$eLast + 1]

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

    $aInfo[$eScrDC ] = _WinAPI_GetDC(0)
    $aInfo[$eMemDC ] = _WinAPI_CreateCompatibleDC($aInfo[$eScrDC])
    $aInfo[$eBitmap ] = _WinAPI_CreateCompatibleBitmap($aInfo[$eScrDC], $iWidth, $iHeight)
    _WinAPI_SelectObject($aInfo[$eMemDC], $aInfo[$eBitmap])
    $aInfo[$eWidth ] = $iWidth
    $aInfo[$eHeight ] = $iHeight
    $aInfo[$eGraphic] = _GDIPlus_GraphicsCreateFromHDC($aInfo[$eMemDC])
    _GDIPlus_GraphicsFillRect($aInfo[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
    Return $aInfo
    EndFunc

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

    ; ===============================================================================================================================
    ; Update layered window with resource information
    ; ===============================================================================================================================
    Func ResourceSet($hGUI, ByRef $aInfo, $iAlpha=-1)
    Local $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

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

    if $iAlpha = -1 then $iAlpha = $iOpacity
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize )
    DllStructSetData($tSize, "X", $aInfo[$eWidth ])
    DllStructSetData($tSize, "Y", $aInfo[$eHeight])
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend )
    DllStructSetData($tBlend, "Alpha" , $iAlpha )
    DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
    _WinAPI_UpdateLayeredWindow($hGUI, $aInfo[$eScrDC], 0, $pSize, $aInfo[$eMemDC], $pSource, 0, $pBlend, $ULW_ALPHA)
    EndFunc

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

    ; ===============================================================================================================================
    ; Finalize resources for the digital time
    ; ===============================================================================================================================
    Func TimeDone()
    _GDIPlus_FontDispose ($aTime[$eFont ])
    _GDIPlus_FontFamilyDispose ($aTime[$eFamily])
    _GDIPlus_StringFormatDispose($aTime[$eFormat])
    _GDIPlus_BrushDispose ($aTime[$eBrush ])
    ResourceDone($aTime)
    EndFunc

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

    ; ===============================================================================================================================
    ; Draw the digital time
    ; ===============================================================================================================================
    Func TimeDraw()
    Local $sString, $aSize

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

    if ($aLast[0][0] = $aCurr[0][0]) and ($aLast[0][1] = $aCurr[0][1]) then Return
    $sString = StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC)
    $aSize = _GDIPlus_GraphicsMeasureString($aTime[$eGraphic], $sString, $aTime[$eFont], $aTime[$eLayout], $aTime[$eFormat])
    DllStructSetData($aTime[$eLayout], "X", $iRadius - (DllStructGetData($aSize[0], "Width") / 2))
    DllStructSetData($aTime[$eLayout], "Y", $iRadius / 3)
    _GDIPlus_GraphicsFillRect($aTime[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
    _GDIPlus_GraphicsDrawStringEx($aTime[$eGraphic], $sString, $aTime[$eFont], $aTime[$eLayout], $aTime[$eFormat], $aTime[$eBrush])
    ResourceSet($hTime, $aTime)
    EndFunc

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

    ; ===============================================================================================================================
    ; Initialize resources for the digital time
    ; ===============================================================================================================================
    Func TimeInit()
    $aTime = ResourceInit($iRadius * 2, $iRadius * 2)
    $aTime[$eBrush ] = _GDIPlus_BrushCreateSolid(0xFF008080)
    $aTime[$eFormat] = _GDIPlus_StringFormatCreate()
    $aTime[$eFamily] = _GDIPlus_FontFamilyCreate("Arial")
    $aTime[$eFont ] = _GDIPlus_FontCreate($aTime[$eFamily], 24, 1)
    $aTime[$eLayout] = _GDIPlus_RectFCreate(0, 0, $iRadius * 2, 40)
    EndFunc

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

    ; ===============================================================================================================================
    ; Convert time value to radians
    ; ===============================================================================================================================
    Func TimeToRadians($sTimeType)
    Switch $sTimeType
    case "sec"
    Return ($nPI / 2) - (@SEC * ($nPI / 30))
    case "min"
    Return ($nPI / 2) - (@MIN * ($nPI / 30)) - (Int(@SEC / 10) * ($nPI / 180))
    case "hour"
    Return ($nPI / 2) - (@HOUR * ($nPI / 6 )) - (@MIN / 12) * ($nPI / 30)
    EndSwitch
    EndFunc

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

    ; ===============================================================================================================================
    ; Handle the WM_NCHITTEST message so our window can be dragged
    ; ===============================================================================================================================
    Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    if $hWnd = $hDial then Return $HTCAPTION
    EndFunc

    [/autoit]
  • Tacho/Uhr - Analogzeiger

    • AndyTR
    • 21. Juni 2011 um 00:15

    Du meinst wohl etwas mit einem analogen Zeiger, dafür ist GDI nötig...
    Hier mal ein Bspl für soetwas ähnliches von UEZ :)

  • Child-GUI - nur Label-Zeichen sichtbar machen

    • AndyTR
    • 17. Juni 2011 um 20:26

    Nabend,

    ich habe folgendes Problem:
    In einem Child-GUI soll alles bis auf das Label transparent gemacht werden (wird über die GUI-Styles erreicht), es muss zwingend ein Child-GUI verwendet werden.
    Nun funktioniert das in dem Quasi-Haupt-GUI auch, aber nich im Child-GUI, wieso weiß ich leider nicht, da beide GUIs zusätzlich noch Childs eines Hide-GUIs sind, um keine Anzeige in der Taskleiste zu bekommen...

    Es ist etwas schwierig zu erklären, letztendlich möchte ich, dass beide GUIs transparent sind, und nur die Label-Zeichen angezeigt werden (wie in $GUI)...

    Ich hoffe auf Hilfe, es muss doch eine Möglichkeit geben, Gruß Andy :)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>

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

    $Hide = GUICreate("Hide", 1, 1, 1, 1)
    $GUI = GUICreate("", 100, 20, -1, @DesktopHeight / 2 - 20, $WS_POPUP, $WS_EX_LAYERED, $Hide)
    GUISetBkColor(0xABCDEF)
    GUISetFont(8.5, 0, -1, "")
    GUICtrlCreateLabel("Test Test Bla Bla 1", 0, 0, 100, 20)
    SetLayeredWindowAttributes_Trans($GUI, 0xABCDEF, 180)
    GUISetState(@SW_SHOW) ; funktioniert wie gewollt, nur Label-Zeichen zu sehen

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

    $GUI_Child = GUICreate("", 100, 20, -1, @DesktopHeight / 2 + 20, $WS_POPUP, $WS_EX_LAYERED, $Hide) ; ?
    GUISetBkColor(0xABCDEF)
    GUISetFont(8.5, 0, -1, "")
    GUICtrlCreateLabel("Test Test Bla Bla 2", 0, 0, 100, 20)
    SetLayeredWindowAttributes_Trans($GUI_Child, 0xABCDEF, 180) ; ?
    GUISetState(@SW_SHOW) ; soll genauso angezeigt werden, wie das obere GUI, wird aber einfach garnicht angezeigt

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

    While 1
    Sleep(100)
    WEnd

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

    Func SetLayeredWindowAttributes_Trans($hwnd, $color = 0x000000, $trans = 255) ; etwas verändert , Func ursprünglich von progandy (kann mich auch irren)
    $color = Execute('0x00' & StringMid(Hex(String($color), 6), 5, 2) & StringMid(Hex(String($color), 6), 3, 2) & StringMid(Hex(String($color), 6), 1, 2))
    DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $color, "byte", $trans, "long", 0x03)
    EndFunc

    [/autoit]

    Edit: Mein Fehler, viel zu dumm angestellt, jetzt ist alles klar

  • Problem mit HotKeySet() und Send()

    • AndyTR
    • 14. Juni 2011 um 15:06
    Spoiler anzeigen
    [autoit]

    HotKeySet("y", "funce")
    HotKeySet("w", "funcz")

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

    While 1
    Sleep(5)
    WEnd

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

    Func funce()
    HotKeySet("w")
    Sleep(5)
    Send("w")
    HotKeySet("w", "funcz")
    EndFunc

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

    Func funcz()
    HotKeySet("y")
    Sleep(5)
    Send("a")
    HotKeySet("y", "funce")
    EndFunc

    [/autoit]


    Gruß Andy

  • Bass.au3 - Tempo/Pitch bestimmen und .mp3 exportieren

    • AndyTR
    • 14. Juni 2011 um 14:38

    Hat mir sehr geholfen, klappt nun, vielen Dank :)

  • Bass.au3 - Tempo/Pitch bestimmen und .mp3 exportieren

    • AndyTR
    • 13. Juni 2011 um 23:28

    Mittlerweil bin ich schon ganz gut voran gekommen. In Echtzeit wird der Stream exportiert und die Lautstärke scheint auf 100% zu bleiben.
    Ich möchte es gerne möglichst schnell exportiert haben - nicht in Echtzeit - also Tempo-Stream dann offenbar als Decode (kriege ich aber nicht hin), und dass ich abfragen kann, ob das Exportieren beendet wurde und das Schreiben in die .mp3 abgeschlossen ist.

    Hoffe nochmal auf Deine Hilfe eukalyptus, wer sollte sich wenn auch mit der Bass-UDF auskenne, wenn nicht Du :rolleyes:

    Grüße :)

    Es muss nurnoch manuell eine Sample.mp3 in den Ordner geschoben werden...

    Spoiler anzeigen
    [autoit]

    #include "Bass.au3"
    #include "BassConstants.au3"
    #include "BassEnc.au3"
    #include "BassEncConstants.au3"
    #include "BassFX.au3"
    #include "BassFXConstants.au3"

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

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

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

    _BASS_Startup(@ScriptDir & "\Dlls\bass.dll")
    _BASS_Encode_Startup(@ScriptDir & "\Dlls\bassenc.dll")
    _BASS_FX_Startup(@ScriptDir & "\Dlls\bassfx.dll")
    _BASS_Init(0, -1, 44100, 0)

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

    $StreamCreateFile = _BASS_StreamCreateFile(0, @ScriptDir & "\Sample.mp3", 0, 0, $BASS_STREAM_DECODE)
    $Random_Track = _BASS_FX_TempoCreate($StreamCreateFile, 0)
    _BASS_ChannelSetAttribute($Random_Track, $BASS_ATTRIB_TEMPO_PITCH, 3)
    _BASS_ChannelSetAttribute($Random_Track, $BASS_ATTRIB_TEMPO, 30)
    _BASS_ChannelSetVolume($Random_Track, 5) ; hier sehr leise (also während Wiedergabe), Export aber offenbar Standard-Volume

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

    _BASS_Encode_Start($Random_Track, 'lame -r -x -b128 -h - "' & @ScriptDir & '\Sample - Encode.mp3"', 0)

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

    _BASS_ChannelPlay($Random_Track, 1)
    While 1
    Sleep(100)
    WEnd

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

    Func _Exit()
    _BASS_Free()
    Exit
    EndFunc

    [/autoit]

    Dateien

    Script.zip 432,72 kB – 342 Downloads
  • Bass.au3 - Tempo/Pitch bestimmen und .mp3 exportieren

    • AndyTR
    • 13. Juni 2011 um 21:44

    Nabend,

    also ich kann ja Tempo und Pitch einen Bass-Streams setzen. Nun möchte ich aber zusätzlich den Stream dann als Musik-File exportieren lassen. Wie kann ich das realisieren? Außerdem habe ich für den Stream auch die Lautstärke verändert, sie soll aber auf dem Standard-Niveau bleiben. Hier mein Basis-Code:

    Spoiler anzeigen
    [autoit]

    #include <Bass.au3>
    #include <BassConstants.au3>
    #include <BassFX.au3>
    #include <BassFXConstants.au3>

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

    _BASS_Startup("..." & "\bass.dll")
    _BASS_FX_Startup("..." & "\bassfx.dll")
    _BASS_Init(0, -1, 44100, 0)

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

    $StreamCreateFile = _BASS_StreamCreateFile(0, "... .mp3", 0, 0, $BASS_STREAM_DECODE)
    $Random_Track = _BASS_FX_TempoCreate($StreamCreateFile, 0)
    _BASS_ChannelSetAttribute($Random_Track, $BASS_ATTRIB_TEMPO_PITCH, X)
    _BASS_ChannelSetAttribute($Random_Track, $BASS_ATTRIB_TEMPO, X)
    _BASS_ChannelSetVolume($Random_Track, X)

    [/autoit]


    Hoffe auf Hilfe, Gruß Andy :)

  • Speed Downloader

    • AndyTR
    • 1. April 2011 um 17:33

    Das müsste dann aber Speed Downloader heißen, wenn es zum Runterladen gedacht ist, und automatische Bilderkennung wird hier bestimmt nich gutgeheißen :huh:

  • Dateiauswahl mit übergabe des Pfades und Namen als Variable

    • AndyTR
    • 1. April 2011 um 17:11

    Hilft Dir dann FileSelectFolder? Dort bekommst du den reinen Pfad zu einem Ordner...

    Edit:
    Das hier liefert Dir von einer Datei Ordner-Pfad und Dateinamen:

    Spoiler anzeigen
    [autoit]

    $a = FileOpenDialog("", "", "Alle (*.*)")
    MsgBox(0, "", $a)
    $b = StringInStr($a, "\", 0, -1)
    $c = StringMid($a, 1, $b)
    MsgBox(0, "", $c)
    $d = StringRight($a, StringLen($a) - $b)
    MsgBox(0, "", $d)

    [/autoit]


    Gruß

  • Arrays: Auf Zelle zugreifen

    • AndyTR
    • 1. April 2011 um 13:20
    [autoit]

    Global $aStadt2D[$aStadt[0]-1][11] ; Hier wird das Array einfach nur deklariert und ihm eine bestimmte Größe zugewiesen (Anzahl Zeilen und Spalten)
    Local $aTmp ; eine temporäre Variable, der anschließend in der 1. For-Schleife immer wieder ein neuer Wert zugewiesen wird
    For $i = 2 To $aStadt[0]
    $aTmp = StringSplit($aStadt[$i], $sSeparatorCSV) ; der temporären Variablen wird ein Wert zugewiesen (in diesem Fall wird "$aTmp" ein eindimensionales Array) , mehrmals, das For-Schleife
    For $j = 1 To $aTmp[0]
    $aStadt2D[$i-2][$j-1] = $aTmp[$j] ; Inhalt der temporären Variablen (hier ein Array, durch "StringSplit") wird in bestimmte Zelle !!! des Arrays geschrieben , mehrmals, das For-Schleife
    Next
    Next
    MsgBox(0,"Meine Zelle ist:",$aStadt2D[X][X]) ; Inhalt der gewählten Zelle des Arrays wird ausgegeben (kann aber nich genau sagen welche Zeilen- und Spaltennummer deine gewollte Zelle hat, probiers einfach aus, Post vor mir scheint ein guter Wert)

    [/autoit]


    Hoffe, dass die Kommentare etwas zum Verständnis beitragen, Gruß

  • Arrays: Auf Zelle zugreifen

    • AndyTR
    • 1. April 2011 um 12:17

    Hier ein sehr schönes Tutorial von BugFix, das dürfte Dir bestimmt weiterhelfen :)

  • Musikplayer - Paar Problemchen

    • AndyTR
    • 3. März 2011 um 22:37

    Das hier dürfte hoffentlich helfen:

    Spoiler anzeigen
    [autoit]

    $Track = [...]

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

    $Aktuell = StringTrimLeft(Sekunden_Umrechnung(_BASS_ChannelBytes2Seconds($Track, _BASS_ChannelGetPosition($Track, $BASS_POS_BYTE))), 3) ; MM:SS , ohne "StringTrimLeft([...], 3)" wieder HH:MM:SS
    $Gesamt = StringTrimLeft(Sekunden_Umrechnung(_BASS_ChannelBytes2Seconds($Track, _BASS_ChannelGetLength($Track, $BASS_POS_BYTE))), 3) ; MM:SS , ohne "StringTrimLeft([...], 3)" wieder HH:MM:SS
    MsgBox(0, "", $Aktuell & " / " & $Gesamt)

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

    Func Sekunden_Umrechnung($Sekunden_Ungerundet)
    Return StringFormat("%02d:%02d:%02d", Floor($Sekunden_Ungerundet / 3600), Mod(Floor($Sekunden_Ungerundet / 60), 60), Mod($Sekunden_Ungerundet, 60)) ; HH:MM:SS
    EndFunc

    [/autoit]


    Grüße, Andy :rolleyes:

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • AndyTR
    • 1. März 2011 um 17:52

    Was ist denn mit "an die Cursorposition liefen" gemeint?

    Soll in ein Input geschrieben werden (Send), das Du mittels Maus fokussiert hast, oder eine Textausgabe an Mausposition (bsplw. Tooltip)?

  • ShellExecute mit Parameter?

    • AndyTR
    • 25. Februar 2011 um 19:20

    Wie das mit den Parametern genau funktioniert weiß ich nicht, aber versuch das hier mal:

    [autoit]

    ShellExecute("namechanger.exe", "/nosound", @AppDataDir & "\.minecraft\bin\")

    [/autoit]


    Grüße :rolleyes:

  • Noch nicht existierendes Fenster verstecken?

    • AndyTR
    • 25. Februar 2011 um 19:04

    So, alles erledigt,
    entschuldigt bitte diesen dummen Thread, hab den Wald vor lauter Bäumen nich gesehn und die möglichen Parameter für ShellExecute nich beachtet, damit geht natürlich auch direkt ab Start @SW_HIDE :whistling:

    Grüße und trotzdem danke für die Postings :rolleyes:

  • Noch nicht existierendes Fenster verstecken?

    • AndyTR
    • 24. Februar 2011 um 18:18

    Hallo,

    ich versuche ein noch nicht existierendes Fenster zu verstecken :P Dabei handelt es sich um die cmd-Konsole... Hab schon einiges mit WinWait/Exists ausprobiert, aber bisher bin ich nicht zum Erfolg gekommen...
    Egal, wie ich es mache, ganz kurz ist das Fenster immer zu sehen :S

    Kennt jemand eine Möglichkeit das zu umgehen? Sieht bei vielen neuerlichen Aufrufen in einer for-Schleife unschön aus, wenn alle 20 sek das Fenster kurz zu sehen ist...

    Grüße :rolleyes:

  • .png auf .bmp zeichnen und speichern...

    • AndyTR
    • 22. Februar 2011 um 15:04

    Klappt bei mir auch, ich dank Dir, Bunny :)

    Grüße, Andy :rolleyes:

  • .png auf .bmp zeichnen und speichern...

    • AndyTR
    • 22. Februar 2011 um 13:47

    Huhu :)

    Ich habe leider keinen blassen Schimmer von GDI und daher muss ich hier einfach nachfragen, auch verschiedene Threads (bsplw. der hier) helfen mir wegen Unverständnis nich :(

    Habe also ein .bmp (Hintergrund) und ein .png (Vordergrund), die genau dieselben Abmessungen haben. Möchte nun einfach das .png auf den Hintergund zeichnen (sodass auch die verschiedenen Transparenz-Stufen korrekt übernommen werden) und dies in einem neuen .bmp speichern.
    Wie würde denn der komplette Code dafür lauten, inklusive Startups und Beenden der GDI-Prozesse?

    Ich weiß, dass das sehr nach "macht mir mal" klingt, kriegs aber wirklich einfach garnich selbst hin :S


    Hoffe auf Hilfe von Euch, dürfte für manche Profis, UEZ :D , fast lächerlich klingen :P

    Grüße, Andy :rolleyes:


    PS: Im Anhang Beispiel-Image-Files

    Dateien

    Images.zip 4,25 kB – 282 Downloads
  • GUICtrlCreateInput: Pic als Background?

    • AndyTR
    • 22. Februar 2011 um 01:08

    Vielen lieben Dank, wäre nich drauf gekommen, dass es so funktioniert, top schnelle Hilfe, trotz so später Zeit schon :)

    Beste Grüße und juts Nächte :rolleyes:

  • GUICtrlCreateInput: Pic als Background?

    • AndyTR
    • 22. Februar 2011 um 00:43

    Danke für Deine Hilfe, Raupi :)
    Aber nun fällt mir auf, dass ich es doch so brauche, dass zwei unterschiedliche Images gesetzt werden...

    Wenn es dazu noch ein Beispiel gibt, wäre ich sehr dankbar und alle Fragen sind beantwortet :)


    Grüße, Andy :rolleyes:

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™