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

  • Vista Sound Wert

    • name22
    • 19. Februar 2010 um 02:32

    In der Bass UDF ist sowas mit drin.
    Die Funktion _BASS_SetVolume() setzt die Systemlautstärke auf den angegebenen Wert, und die Funktion _BASS_GetVolume() liesst sie aus.
    Das ganze funktioniert auch bei Vista.

  • Conways Game of Life

    • name22
    • 17. Februar 2010 um 22:15

    Das hier endet in einer Art Gesicht...:

    Dateien

    Aufzeichnen.PNG 10,85 kB – 0 Downloads
  • GDI+ PunkteDieVonWändenAbprallenScript

    • name22
    • 17. Februar 2010 um 17:17

    Ist doch schon ein guter Ansatz, aber eigentlich meinte ich etwas in der Art das den exakten Abprallwinkel berechnet, da das ja Kugeln sind und keine Rechtecke. Sieht noch ein wenig unrealistisch aus, aber es funktioniert mehr oder weniger.... :thumbup:
    Und hier eine Sensation: GDI+ in 3D. Naja zumindest fast :D . Die Berechnung der Koordinaten für die Polygone hab ich mir bei UEZ abgeschaut (Ich hoffe er hat nichts dagegen).

    Spoiler anzeigen
    [autoit]


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

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

    Global $GUIWidth = 400
    Global $GUIHeight = 400
    Global $Width1 = 100
    Global $Height1 = 20
    Global $Width2 = 20
    Global $Height2 = 100
    Global $Degree1 = 0
    Global $Degree2 = 0
    Global $Step1 = 1
    Global $Step2 = 3

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

    Global Const $Pi_Div_180 = 4 * ATan(1) / 180
    Global $j = 1
    Global $VectorX, $VectorY
    Global $Points1[5][2]
    $Points1[0][0] = 4
    Global $Points2[5][2]
    $Points2[0][0] = 4

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

    For $i = 0 To 270 Step 90
    $VectorX1 = Cos(($Degree1 - 90 + $i) * $Pi_Div_180) * $Width1 + $GUIWidth / 2
    $VectorY1 = Sin(($Degree1 - 90 + $i) * $Pi_Div_180) * $Height1 + $GUIWidth / 2
    $Points1[$j][0] = $VectorX1
    $Points1[$j][1] = $VectorY1
    $j += 1
    Next
    $j = 1
    For $i = 0 To 270 Step 90
    $VectorX2 = Cos(($Degree2 - 90 + $i) * $Pi_Div_180) * $Width2 + $GUIWidth / 2
    $VectorY2 = Sin(($Degree2 - 90 + $i) * $Pi_Div_180) * $Height2 + $GUIWidth / 2
    $Points2[$j][0] = $VectorX2
    $Points2[$j][1] = $VectorY2
    $j += 1
    Next

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

    $hWnd = GUICreate("GDI+", $GUIWidth, $GUIHeight)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic)
    Global $Buffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
    _GDIPlus_GraphicsClear($Buffer)
    Global $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 3)

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

    AdlibRegister("_Draw", 10)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsClear($Buffer)
    _GDIPlus_GraphicsDrawPolygon($Buffer, $Points1, $hPen)
    _GDIPlus_GraphicsDrawPolygon($Buffer, $Points2, $hPen)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
    $Degree1 += $Step1
    $Degree2 += $Step2
    $j = 1
    For $i = 0 To 270 Step 90
    $VectorX1 = Cos(($Degree1 - 90 + $i) * $Pi_Div_180) * $Width1 + $GUIWidth / 2
    $VectorY1 = Sin(($Degree1 - 90 + $i) * $Pi_Div_180) * $Height1 + $GUIWidth / 2
    $Points1[$j][0] = $VectorX1
    $Points1[$j][1] = $VectorY1
    $j += 1
    Next
    $j = 1
    For $i = 0 To 270 Step 90
    $VectorX2 = Cos(($Degree2 - 90 + $i) * $Pi_Div_180) * $Width2 + $GUIWidth / 2
    $VectorY2 = Sin(($Degree2 - 90 + $i) * $Pi_Div_180) * $Height2 + $GUIWidth / 2
    $Points2[$j][0] = $VectorX2
    $Points2[$j][1] = $VectorY2
    $j += 1
    Next
    EndFunc ;==>_Draw

    [/autoit]

    Und als sich drehender 3D Würfel:

    Spoiler anzeigen
    [autoit]

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

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

    Global $GUIWidth = 400
    Global $GUIHeight = 400
    Global $Width1 = 100
    Global $Height1 = 20
    Global $Width2 = 100
    Global $Height2 = 20
    Global $Degree1 = 0
    Global $Degree2 = 0
    Global $Step1 = 1
    Global $Step2 = 1

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

    Global Const $Pi_Div_180 = 4 * ATan(1) / 180
    Global $j = 1
    Global $VectorX, $VectorY
    Global $Points1[5][2]
    $Points1[0][0] = 4
    Global $Points2[5][2]
    $Points2[0][0] = 4

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

    For $i = 0 To 270 Step 90
    $VectorX1 = Cos(($Degree1 - 90 + $i) * $Pi_Div_180) * $Width1 + $GUIWidth / 2
    $VectorY1 = Sin(($Degree1 - 90 + $i) * $Pi_Div_180) * $Height1 + $GUIHeight / 2 + 125
    $Points1[$j][0] = $VectorX1
    $Points1[$j][1] = $VectorY1
    $j += 1
    Next
    $j = 1
    For $i = 0 To 270 Step 90
    $VectorX2 = Cos(($Degree2 - 90 + $i) * $Pi_Div_180) * $Width2 + $GUIWidth / 2
    $VectorY2 = Sin(($Degree2 - 90 + $i) * $Pi_Div_180) * $Height2 + $GUIHeight / 2
    $Points2[$j][0] = $VectorX2
    $Points2[$j][1] = $VectorY2
    $j += 1
    Next

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

    $Line1X1 = $Points1[1][0]
    $Line1Y1 = $Points1[1][1]
    $Line1X2 = $Points2[1][0]
    $Line1Y2 = $Points2[1][1]
    $Line2X1 = $Points1[2][0]
    $Line2Y1 = $Points1[2][1]
    $Line2X2 = $Points2[2][0]
    $Line2Y2 = $Points2[2][1]
    $Line3X1 = $Points1[3][0]
    $Line3Y1 = $Points1[3][1]
    $Line3X2 = $Points2[3][0]
    $Line3Y2 = $Points2[3][1]
    $Line4X1 = $Points1[4][0]
    $Line4Y1 = $Points1[4][1]
    $Line4X2 = $Points2[4][0]
    $Line4Y2 = $Points2[4][1]

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

    $hWnd = GUICreate("GDI+", $GUIWidth, $GUIHeight)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic)
    Global $Buffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
    _GDIPlus_GraphicsClear($Buffer)
    Global $hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 3)

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

    AdlibRegister("_Draw", 10)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsClear($Buffer)
    _GDIPlus_GraphicsDrawPolygon($Buffer, $Points1, $hPen)
    _GDIPlus_GraphicsDrawPolygon($Buffer, $Points2, $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Line1X1, $Line1Y1, $Line1X2, $Line1Y2, $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Line2X1, $Line2Y1, $Line2X2, $Line2Y2, $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Line3X1, $Line3Y1, $Line3X2, $Line3Y2, $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Line4X1, $Line4Y1, $Line4X2, $Line4Y2, $hPen)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
    $Degree1 += $Step1
    $Degree2 += $Step2
    $j = 1
    For $i = 0 To 270 Step 90
    $VectorX1 = Cos(($Degree1 - 90 + $i) * $Pi_Div_180) * $Width1 + $GUIWidth / 2
    $VectorY1 = Sin(($Degree1 - 90 + $i) * $Pi_Div_180) * $Height1 + $GUIHeight / 2 + 125
    $Points1[$j][0] = $VectorX1
    $Points1[$j][1] = $VectorY1
    $j += 1
    Next
    $j = 1
    For $i = 0 To 270 Step 90
    $VectorX2 = Cos(($Degree2 - 90 + $i) * $Pi_Div_180) * $Width2 + $GUIWidth / 2
    $VectorY2 = Sin(($Degree2 - 90 + $i) * $Pi_Div_180) * $Height2 + $GUIHeight / 2
    $Points2[$j][0] = $VectorX2
    $Points2[$j][1] = $VectorY2
    $j += 1
    Next
    $Line1X1 = $Points1[1][0]
    $Line1Y1 = $Points1[1][1]
    $Line1X2 = $Points2[1][0]
    $Line1Y2 = $Points2[1][1]
    $Line2X1 = $Points1[2][0]
    $Line2Y1 = $Points1[2][1]
    $Line2X2 = $Points2[2][0]
    $Line2Y2 = $Points2[2][1]
    $Line3X1 = $Points1[3][0]
    $Line3Y1 = $Points1[3][1]
    $Line3X2 = $Points2[3][0]
    $Line3Y2 = $Points2[3][1]
    $Line4X1 = $Points1[4][0]
    $Line4Y1 = $Points1[4][1]
    $Line4X2 = $Points2[4][0]
    $Line4Y2 = $Points2[4][1]
    EndFunc ;==>_Draw

    [/autoit]
  • GDI+ Pong

    • name22
    • 17. Februar 2010 um 11:43

    GDI+ Pong:
    Steuerung:
    - linkes Pad: W und S
    - rechtes Pad: Pfeiltaste Oben und Pfeiltaste Unten

    (Am Anfang des Scripts sind ein paar globale Variablen mit Beschreibungen was sie bewirken)

    Spoiler anzeigen
    [autoit]

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

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

    Global $GUIWidth = 600 ;Breite GUI
    Global $GUIHeight = 400 ;Höhe GUI
    Global $BallWidth = 10 ;Breite Punkt
    Global $BallHeight = 10 ;Höhe Punkt
    Global $PadHeight1 = 60 ;Höhe des linken Pads
    Global $PadHeight2 = 60 ;Höhe des rechten Pads
    Global $PadWidth1 = 10 ;Breite des linken Pads
    Global $PadWidth2 = 10 ;Breite des rechten Pads
    Global $GUIColorBG = 0xFF000000 ;Farbe GUI
    Global $BallColor = 0xFFFFFFFF ;Farbe Punkt
    Global $Pad1Color = 0xFFFFFFFF ;Farbe des linken Pads
    Global $Pad2Color = 0xFFFFFFFF ;Farbe des rechten Pads
    Global $LineColor = 0xFFFFFFFF ;Farbe der Mittellinie

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

    Global $Score1 = 0
    Global $Score2 = 0
    Global $iXBall = $GUIWidth / 2 - $BallWidth / 2
    Global $iYBall = Random($BallHeight + 10, $GUIHeight - $BallHeight - 10)
    Global $iXPad1 = 10
    Global $iYPad1 = $GUIHeight / 2 - $PadHeight1 / 2
    Global $iXPad2 = $GUIWidth - $PadWidth2 - 10
    Global $iYPad2 = $GUIHeight / 2 - $PadHeight2 / 2
    Global $StepYBall

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

    If Random(1, 2, 1) = 1 Then
    Global $StepXBall = 5
    Else
    Global $StepXBall = -5
    EndIf
    Do
    $StepYBall = Random(-5, 5, 1)
    Until Not $StepYBall = 0

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

    $hWnd = GUICreate("GDI+ Pong by Name22", $GUIWidth, $GUIHeight)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic)
    Global $Buffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
    _GDIPlus_GraphicsClear($Buffer, $GUIColorBG)
    Global $hBrush1 = _GDIPlus_BrushCreateSolid($BallColor)
    Global $hBrush2 = _GDIPlus_BrushCreateSolid($Pad1Color)
    Global $hBrush3 = _GDIPlus_BrushCreateSolid($Pad2Color)
    Global $hBrush4 = _GDIPlus_BrushCreateSolid($LineColor)

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

    AdlibRegister("_Draw", 20)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    AdlibUnRegister()
    _GDIPlus_BrushDispose($hBrush1)
    _GDIPlus_BrushDispose($hBrush2)
    _GDIPlus_BrushDispose($hBrush3)
    _GDIPlus_BrushDispose($hBrush4)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    If Not WinActive($hWnd) = 0 Then
    If _IsPressed("57") And $iYPad1 >= 0 Then $iYPad1 -= 2
    If _IsPressed("53") And $iYPad1 <= $GUIHeight - $PadHeight1 Then $iYPad1 += 2
    If _IsPressed("26") And $iYPad2 >= 0 Then $iYPad2 -= 2
    If _IsPressed("28") And $iYPad2 <= $GUIHeight - $PadHeight2 Then $iYPad2 += 2
    EndIf
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsClear($Buffer, $GUIColorBG)
    _GDIPlus_GraphicsFillRect($Buffer, $iXPad1, $iYPad1, $PadWidth1, $PadHeight1, $hBrush2)
    _GDIPlus_GraphicsFillRect($Buffer, $iXPad2, $iYPad2, $PadWidth2, $PadHeight2, $hBrush3)
    For $i = 0 To Round($GUIHeight / 30) - 1
    _GDIPlus_GraphicsFillRect($Buffer, $GUIWidth / 2 - 15, $i * 60, 10, 30, $hBrush4)
    Next
    _GDIPlus_GraphicsFillEllipse($Buffer, $iXBall, $iYBall, $BallWidth, $BallHeight, $hBrush1)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
    $iXBall += $StepXBall
    $iYBall += $StepYBall
    Switch $iXBall
    Case $iXPad1 + $PadWidth1 - 5 To $iXPad1 + $PadWidth1
    If $iYBall >= $iYPad1 - $BallHeight / 2 And $iYBall <= $iYPad1 + $PadHeight1 + $BallHeight / 2 Then $StepXBall = $StepXBall * - 1
    Case $iXPad2 - $PadWidth2 To $iXPad2 - $PadWidth2 + 5
    If $iYBall >= $iYPad2 - $BallHeight / 2 And $iYBall <= $iYPad2 + $PadHeight2 + $BallHeight / 2 Then $StepXBall = $StepXBall * - 1
    EndSwitch
    If $iYBall >= $GUIHeight - $BallHeight Then $StepYBall = $StepYBall * - 1
    If $iYBall <= 0 Then $StepYBall = $StepYBall * - 1
    If $iXBall <= 0 Then
    $Score2 += 1
    WinSetTitle($hWnd, "", "Player 1: " & $Score1 & " | Player 2: " & $Score2)
    Sleep(1000)
    $iXBall = $GUIWidth / 2 - $BallWidth / 2
    $iYBall = Random($BallHeight + 10, $GUIHeight - $BallHeight - 10)
    $iYPad1 = $GUIHeight / 2 - $PadHeight1 / 2
    $iYPad2 = $GUIHeight / 2 - $PadHeight2 / 2
    If Random(1, 2, 1) = 1 Then
    $StepXBall = 5
    Else
    $StepXBall = -5
    EndIf
    Do
    $StepYBall = Random(-5, 5, 1)
    Until Not $StepYBall = 0
    EndIf
    If $iXBall >= $GUIWidth - $BallWidth Then
    $Score1 += 1
    WinSetTitle($hWnd, "", "Player 1: " & $Score1 & " | Player 2: " & $Score2)
    Sleep(1000)
    $iXBall = $GUIWidth / 2 - $BallWidth / 2
    $iYBall = Random($BallHeight + 10, $GUIHeight - $BallHeight - 10)
    $iYPad1 = $GUIHeight / 2 - $PadHeight1 / 2
    $iYPad2 = $GUIHeight / 2 - $PadHeight2 / 2
    If Random(1, 2, 1) = 1 Then
    $StepXBall = 5
    Else
    $StepXBall = -5
    EndIf
    Do
    $StepYBall = Random(-5, 5, 1)
    Until Not $StepYBall = 0
    EndIf
    EndFunc ;==>_Draw

    [/autoit]
  • GDI+ PunkteDieVonWändenAbprallenScript

    • name22
    • 16. Februar 2010 um 05:03

    Hier ein kleines GDI+ Script mit Punkten die von den Wänden abprallen :D
    Kollisionen unter den Punkten zu überwachen war mir leider noch zu kompliziert. Ich glaube kaum das das irgendjemand wirklich gebrauchen kann. Und ich weiß auch nicht, ob es das hier schon gibt. Und dennoch musste ich das einfach mal loswerden...

    Spoiler anzeigen
    [autoit]


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

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

    Global $GUIWidth = 400 ;Breite GUI
    Global $GUIHeight = 400 ;Höhe GUI
    Global $BallWidth = 20 ;Breite Punkte
    Global $BallHeight = 20 ;Höhe Punkte
    Global $BallCount = 10 ;Anzahl Punkte
    Global $GUIColorBG = 0xFF000000 ;Farbe GUI
    Global $BallColor = 0xFFFFFFFF ;Farbe Punkte

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

    Global $Title = 1
    Global $iX[$BallCount]
    Global $iY[$BallCount]
    Global $StepX[$BallCount]
    Global $StepY[$BallCount]

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

    For $i = 0 To $BallCount - 1
    $iX[$i] = Random($BallWidth + 10, $GUIWidth - $BallWidth - 10)
    $iY[$i] = Random($BallHeight + 10, $GUIHeight - $BallHeight - 10)
    Do
    $StepX[$i] = Random(-5, 5, 1)
    $StepY[$i] = Random(-5, 5, 1)
    Until Not ($StepX[$i] = 0 And $StepY[$i] = 0)
    Next

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

    $hWnd = GUICreate("Punkteanzahl: " & $BallCount, $GUIWidth, $GUIHeight)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $hGraphic)
    Global $Buffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
    _GDIPlus_GraphicsClear($Buffer, $GUIColorBG)
    Global $hBrush = _GDIPlus_BrushCreateSolid($BallColor)

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

    AdlibRegister("_Draw", 20)
    AdlibRegister("_ChangeTitle", 4000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    AdlibUnRegister()
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsClear($Buffer, $GUIColorBG)
    For $i = 0 To $BallCount - 1
    _GDIPlus_GraphicsFillEllipse($Buffer, $iX[$i], $iY[$i], $BallWidth, $BallHeight, $hBrush)
    $iX[$i] += $StepX[$i]
    $iY[$i] += $StepY[$i]
    If $iX[$i] >= $GUIWidth - $BallWidth Then $StepX[$i] = $StepX[$i] * - 1
    If $iY[$i] >= $GUIWidth - $BallHeight Then $StepY[$i] = $StepY[$i] * - 1
    If $iX[$i] <= 0 Then $StepX[$i] = $StepX[$i] * - 1
    If $iY[$i] <= 0 Then $StepY[$i] = $StepY[$i] * - 1
    Next
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GUIWidth, $GUIHeight)
    EndFunc ;==>_Draw

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

    Func _ChangeTitle()
    If $Title = 1 Then
    WinSetTitle($hWnd,"", "Punkteanzahl: " & $BallCount)
    $Title += 1
    ElseIf $Title = 2 Then
    WinSetTitle($hWnd, "", "Punktefarbe: 0x" & Hex($BallColor, 8))
    $Title += 1
    Else
    WinSetTitle($hWnd, "", "GUI Hintergrundfarbe: 0x" & Hex($GUIColorBG, 8))
    $Title = 1
    EndIf
    EndFunc

    [/autoit]
  • GUIGetMsg Problem - Nicht auf Eingabe warten / Abbrechen Knopf

    • name22
    • 15. Februar 2010 um 01:30

    Der OnEvent Mode ist nicht wirklich schwer. Im Grunde fungieren dann alle Controls, für die mit GuiCtrlSetOnEvent ein Event bestimmt wurde, als Hotkeys.
    Und für Jedes gesetzte Event wird eine bestimmte Funktion aufgerufen.
    z.B:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Form1 = GUICreate("Form1", 278, 74, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Button1 = GUICtrlCreateButton("Button1", 8, 8, 75, 57, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button1Click")
    $Button2 = GUICtrlCreateButton("Button2", 96, 8, 83, 57, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button2Click")
    $Button3 = GUICtrlCreateButton("Button3", 192, 8, 75, 57, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button3Click")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func Button1Click()
    MsgBox(64, "Info", "Du hast Button 1 gedrückt")
    EndFunc

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

    Func Button2Click()
    MsgBox(64, "Info", "Du hast Button 2 gedrückt")
    EndFunc

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

    Func Button3Click()
    MsgBox(64, "Info", "Du hast Button 3 gedrückt")
    EndFunc

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

    Func Form1Close()
    GUIDelete()
    Exit
    EndFunc

    [/autoit]

    Oder im Messageloop Modus:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 278, 74, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 8, 8, 75, 57, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Button2", 96, 8, 83, 57, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Button3", 192, 8, 75, 57, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    MsgBox(64, "Info", "Du hast Button 1 gedrückt")
    Case $Button2
    MsgBox(64, "Info", "Du hast Button 2 gedrückt")
    Case $Button3
    MsgBox(64, "Info", "Du hast Button 3 gedrückt")
    Case $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Edit: Du kannst auch ein Event für ein Control neu bestimmen, und so eine andere Funktion aufrufen die die erste abbricht.
    z.B. so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Form1 = GUICreate("Form1", 278, 74, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Button1 = GUICtrlCreateButton("Button1", 8, 8, 75, 57, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button1Click")
    $Button2 = GUICtrlCreateButton("Button2", 96, 8, 83, 57, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button2Click")
    $Button3 = GUICtrlCreateButton("Button3", 192, 8, 75, 57, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button3Click")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func Button1Click()
    MsgBox(64, "Info", "Du hast Button 1 gedrückt")
    GUICtrlSetData($Button1, "Beenden")
    GUICtrlSetOnEvent($Button1, "Form1Close")
    EndFunc

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

    Func Button2Click()
    MsgBox(64, "Info", "Du hast Button 2 gedrückt")
    GUICtrlSetData($Button2, "Beenden")
    GUICtrlSetOnEvent($Button2, "Form1Close")
    EndFunc

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

    Func Button3Click()
    MsgBox(64, "Info", "Du hast Button 3 gedrückt")
    GUICtrlSetData($Button3, "Beenden")
    GUICtrlSetOnEvent($Button3, "Form1Close")
    EndFunc

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

    Func Form1Close()
    GUIDelete()
    Exit
    EndFunc

    [/autoit]
  • Komplexes Programm mit externen Dateien und Autoupdater

    • name22
    • 14. Februar 2010 um 15:00

    Du brauchst einfach nur 2 Dateien egal welcher Art. Die eine enthält die Version des vorhandenen Programms und die andere die Version der Datei auf dem Server, dann musst du beide auslesen und vergleichen. Jenachdem ob eine aktuellere Version vorhanden ist oder nicht die neue .exe mit InetGet() oder ähnlichem runterladen und die alte damit ersetzen. Ob du jetzt .ini oder .txt Dateien verwendest ist egal du kannst dann halt nicht mehr mit IniRead() und co sondern nur noch mit FileOpen() und FileRead() arbeiten.

  • Komplexes Programm mit externen Dateien und Autoupdater

    • name22
    • 14. Februar 2010 um 04:53

    Eine Update.ini würde in etwa so aussehen:

    [Version]
    Version=2.0.1

    Und dann einfach auslesen mit

    [autoit]

    IniRead("Update.ini", "Version", "Version", "Error")

    [/autoit]


    und überprüfen ob die Version neuer ist als die Vorhandene.

  • Daten nach einer bestimmten Zeit an eine Email-Adresse senden

    • name22
    • 6. Februar 2010 um 18:34

    Abgesehen davon schau dir die Funktion _INetSmtpMail() an.
    Eine Textdatei einlesen kannst du mit FileRead(), der Rest dürfte nicht allzu schwer sein.

  • Lautstärke abrufen

    • name22
    • 3. Februar 2010 um 22:34

    Falls du noch mehr Funktionen dieser Art benötigst, versuchs mal mit der BASS.au3
    So würde das dann aussehen:

    Spoiler anzeigen
    [autoit]

    #include <Bass.au3>

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

    _BASS_STARTUP ()
    _BASS_Init (0, -1, 44100, 0, "")

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

    If @error Then
    MsgBox(0, "Error", "Could not initialize audio")
    Exit
    EndIf

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

    MsgBox (64,"BASS.au3:","Aktuelle Systemlautstärke: "&Round (_BASS_GetVolume()*100)&"%")

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

    Func OnAutoItExit()
    _BASS_Free()
    EndFunc ;==>OnAutoItExit

    [/autoit]

    Und hier bekommst du immer die aktuelle Version der BASS.au3: http://www.signa5.com/autoit/BASS/BASS.zip

    Edit: @ L3viathan2142: Bei deinem Beispiel gibt mir die Funktion immer 100 zurück, egal wie ich die Lautstärke ändere. Wenn ich versuche die Lautstärke mit
    SoundSetWaveVolume() zu setzen bekomme ich zwar diesen Wert, aber die Lautstärke ändert sich nicht.

  • Frage: PasswortChar Textfeld auslesen

    • name22
    • 30. Januar 2010 um 02:44

    Wieso soll der Text lesbar sein, wenn du so wie so weißt was das Script reinschreibt?

  • Brauche Hilfe

    • name22
    • 28. Januar 2010 um 23:41

    Bei deinem Klingel Problem kann ich dir leider nicht weiterhelfen, aber du solltest vielleicht lieber mit ControlSend arbeiten, da es einfach sicherer ist falls der Benutzer das Fenster minimiert oder Ähnliches. Wenn du ControlSend verwendest kannst du theoretisch auch das Fenster minimieren und das Script arbeitet weiter ( klappt nicht bei allen Programmen).

  • Textdatei scannen und gewisse Zeilen angeben/ersetzen

    • name22
    • 28. Januar 2010 um 16:50

    In Autoit gibt es ein paar nützliche Funktionen für dein Problem:
    -StringInStr() durchsucht einen String nach einem definierten Substring.
    -Verschiedene StringIs... Funktionen, welche die Art eines Strings überprüfen z.B. StringIsDigit() überprüft ob ein String nur Zahlen von 0-9 enthält
    -StringLeft und StringRight geben eine bestimmte Anzahl Zeichen aus einem String zurück, von links oder Rechts ausgehend.
    -Die String.au3 Funktionen werden da bestimmt auch nützlich sein.
    -Auslesen aus einer Textdatei kannst du das ganze mit FileRead() bzw. schreiben kannst du mit FileWrite, falls du noch weitere Modi benötigst einfach vorher mit $i = FileOpen() und dem gewünschten Modus öffnen und dann jedesmal statt dem Dateinamen die Variable verwenden. Am Ende des Scripts oder wenn du einen anderen Modus benötigst einfach wieder mit FileClose($i) schließen.
    Hoffe ich konnte helfen falls nicht gibt es hier ja genug die mehr darüber wissen als ich. ^^

  • Konsolen Anwendung - Abbruch Key / Input Filtern

    • name22
    • 28. Januar 2010 um 16:34

    Scheinbar gibt WinGetHandle (WinGetTitle("C:\Windows")) immer den Handle des aktiven "cmd" Fensters zurück. Vielleicht hilft dir das ja weiter :D

  • Einzelnen Ordner mit Passwort schützen

    • name22
    • 28. Januar 2010 um 01:49

    Icynator:
    So könnte man es auch machen, allerdings wäre eine Abfrage ob das Passwort nun stimmt nicht mehr möglich.
    (Das kann man jetzt als Vorteil oder als Nachteil sehen).

  • Gleichgewicht halten (Spiel)

    • name22
    • 26. Januar 2010 um 21:08

    95 Sekunden beim 2ten Versuch :D
    [Blockierte Grafik: http://img682.imageshack.us/img682/6195/95sekunden.th.png]
    Wie zum Teufel hab ich das gemacht 8| ?(

  • Text verschlüssler für Shared-PC's

    • name22
    • 26. Januar 2010 um 20:58

    Ich glaube spätestens beim entschlüsseln von z.B. Bilddateien dürfte es probleme geben. Aber nur für Textdateien egal welcher Art wäre doch auch schon mal nicht schlecht.

  • Autoupdater

    • name22
    • 20. Januar 2010 um 02:00

    Das Script lädt zuerst die Datei mit der Versionsnummer runter und simuliert dann einen Fortschrittsbalken (keine Ahnung was das soll) und vergleicht die beiden Versionen des Scripts. Sind die beiden Versionen gleich, wird wie gewöhnlich die "Start.exe" ausgeführt, ist eine aktuellere Version vorhanden wird diese heruntergeladen. Im Script sind allerdings ein "paar" Fehler... Mit vielen Dateien müsstest du nur entsprechend viele "InetGet" Funktionen verwenden.

  • Endlosschleife mit Msgbox, die mit Klick auf einen Button beendet wird

    • name22
    • 20. Januar 2010 um 01:39

    Das würde dann so aussehen:

    Spoiler anzeigen
    [autoit]

    Do
    $Msg = MsgBox (1, "Test - Fenster", "Das Fenster schließt in 5 Sekunden", 5)
    Sleep (60000)
    Until $Msg = 1
    Exit

    [/autoit]

    Soweit ich weiß ist es nicht möglich eine MsgBox mit neuem Text zu aktualisieren. (Kann aber auch gut sein, dass ich mich irre :D ).
    Stattdessen könntest du aber einen Tool- oder TrayTip verwenden
    Welchen Zweck hat das Script wenn ich fragen darf?
    Oder ist es einfach nur ein Test?

    EDIT: Das obige Beispiel lässt das Script noch 60 Sekunden offen nach drücken des OK Buttons ^^ .
    Das hier nicht:

    Spoiler anzeigen
    [autoit]

    While 1
    $Msg = MsgBox (1, "Test - Fenster", "Das Fenster schließt in 5 Sekunden", 5)
    If $Msg = 1 Then
    Exit
    EndIf
    Sleep (6000)
    WEnd

    [/autoit]
  • Listview - KeyUP & KeyDown abfangen und die Markierung verschieben

    • name22
    • 18. Januar 2010 um 20:31

    Wäre klasse, wenn das als Option bei der "GUICtrlCreateListView()" und anderen vorhanden sein könnte.

    Ach ja, hier mal eine ganz primitive Version leider noch mit Hotkeys... Aber es funktioniert ja

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=C:\Form1.kxf
    $Form1 = GUICreate("Form1", 162, 210, 192, 124)
    $List1 = GUICtrlCreateList("", 8, 8, 145, 188)
    GUICtrlSetData(-1, "Item 1|Item 2|Item 3|Item 4|Item 5|Item 6|Item 7")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    HotKeySet ("{UP}","UP")
    HotKeySet ("{DOWN}","DOWN")

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

    Do
    $nMsg = GUIGetMsg()
    Until $nMsg = $GUI_EVENT_CLOSE

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

    Func UP()
    If _GUICtrlListBox_GetCurSel ($List1) = 0 Then
    _GUICtrlListBox_SetCurSel ($List1,_GUICtrlListBox_GetCount ($List1)-1)
    Else
    _GUICtrlListBox_SetCurSel ($List1,_GUICtrlListBox_GetCurSel ($List1)-1)
    EndIf
    EndFunc

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

    Func DOWN()
    If _GUICtrlListBox_GetCurSel ($List1) = _GUICtrlListBox_GetCount ($List1)-1 Then
    _GUICtrlListBox_SetCurSel ($List1,0)
    Else
    _GUICtrlListBox_SetCurSel ($List1,_GUICtrlListBox_GetCurSel ($List1) +1)
    EndIf
    EndFunc

    [/autoit]

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™