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.
Beiträge von name22
-
-
Das hier endet in einer Art Gesicht...:
-
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....
Und hier eine Sensation: GDI+ in 3D. Naja zumindest fast . Die Berechnung der Koordinaten für die Polygone hab ich mir bei UEZ abgeschaut (Ich hoffe er hat nichts dagegen).Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <GUIConstants.au3>Global $GUIWidth = 400
[/autoit] [autoit][/autoit] [autoit]
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 = 3Global Const $Pi_Div_180 = 4 * ATan(1) / 180
[/autoit] [autoit][/autoit] [autoit]
Global $j = 1
Global $VectorX, $VectorY
Global $Points1[5][2]
$Points1[0][0] = 4
Global $Points2[5][2]
$Points2[0][0] = 4For $i = 0 To 270 Step 90
[/autoit] [autoit][/autoit] [autoit]
$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$hWnd = GUICreate("GDI+", $GUIWidth, $GUIHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
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)AdlibRegister("_Draw", 10)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($Buffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndSwitch
WEndFunc _Draw()
[/autoit]
_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 ;==>_DrawUnd als sich drehender 3D Würfel:
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>Global $GUIWidth = 400
[/autoit] [autoit][/autoit] [autoit]
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 = 1Global Const $Pi_Div_180 = 4 * ATan(1) / 180
[/autoit] [autoit][/autoit] [autoit]
Global $j = 1
Global $VectorX, $VectorY
Global $Points1[5][2]
$Points1[0][0] = 4
Global $Points2[5][2]
$Points2[0][0] = 4For $i = 0 To 270 Step 90
[/autoit] [autoit][/autoit] [autoit]
$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]
[/autoit] [autoit][/autoit] [autoit]
$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]$hWnd = GUICreate("GDI+", $GUIWidth, $GUIHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
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)AdlibRegister("_Draw", 10)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($Buffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndSwitch
WEndFunc _Draw()
[/autoit]
_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 -
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <Misc.au3>Global $GUIWidth = 600 ;Breite GUI
[/autoit] [autoit][/autoit] [autoit]
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 MittellinieGlobal $Score1 = 0
[/autoit] [autoit][/autoit] [autoit]
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 $StepYBallIf Random(1, 2, 1) = 1 Then
[/autoit] [autoit][/autoit] [autoit]
Global $StepXBall = 5
Else
Global $StepXBall = -5
EndIf
Do
$StepYBall = Random(-5, 5, 1)
Until Not $StepYBall = 0$hWnd = GUICreate("GDI+ Pong by Name22", $GUIWidth, $GUIHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
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)AdlibRegister("_Draw", 20)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$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
WEndFunc _Draw()
[/autoit]
_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 -
Hier ein kleines GDI+ Script mit Punkten die von den Wänden abprallen
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]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <GUIConstants.au3>Global $GUIWidth = 400 ;Breite GUI
[/autoit] [autoit][/autoit] [autoit]
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 PunkteGlobal $Title = 1
[/autoit] [autoit][/autoit] [autoit]
Global $iX[$BallCount]
Global $iY[$BallCount]
Global $StepX[$BallCount]
Global $StepY[$BallCount]For $i = 0 To $BallCount - 1
[/autoit] [autoit][/autoit] [autoit]
$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$hWnd = GUICreate("Punkteanzahl: " & $BallCount, $GUIWidth, $GUIHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
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)AdlibRegister("_Draw", 20)
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister("_ChangeTitle", 4000)While 1
[/autoit] [autoit][/autoit] [autoit]
$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
WEndFunc _Draw()
[/autoit] [autoit][/autoit] [autoit]
_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 ;==>_DrawFunc _ChangeTitle()
[/autoit]
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 -
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>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 278, 74, 192, 124)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
WEndFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Info", "Du hast Button 1 gedrückt")
EndFuncFunc Button2Click()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Info", "Du hast Button 2 gedrückt")
EndFuncFunc Button3Click()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Info", "Du hast Button 3 gedrückt")
EndFuncFunc Form1Close()
[/autoit]
GUIDelete()
Exit
EndFuncOder im Messageloop Modus:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>$Form1 = GUICreate("Form1", 278, 74, 192, 124)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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)While 1
[/autoit]
$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
WEndEdit: 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>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 278, 74, 192, 124)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
WEndFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Info", "Du hast Button 1 gedrückt")
GUICtrlSetData($Button1, "Beenden")
GUICtrlSetOnEvent($Button1, "Form1Close")
EndFuncFunc Button2Click()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Info", "Du hast Button 2 gedrückt")
GUICtrlSetData($Button2, "Beenden")
GUICtrlSetOnEvent($Button2, "Form1Close")
EndFuncFunc Button3Click()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Info", "Du hast Button 3 gedrückt")
GUICtrlSetData($Button3, "Beenden")
GUICtrlSetOnEvent($Button3, "Form1Close")
EndFuncFunc Form1Close()
[/autoit]
GUIDelete()
Exit
EndFunc -
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.
-
Eine Update.ini würde in etwa so aussehen:
[Version]
Version=2.0.1Und dann einfach auslesen mit
[autoit]IniRead("Update.ini", "Version", "Version", "Error")
[/autoit]
und überprüfen ob die Version neuer ist als die Vorhandene. -
Abgesehen davon schau dir die Funktion _INetSmtpMail() an.
Eine Textdatei einlesen kannst du mit FileRead(), der Rest dürfte nicht allzu schwer sein. -
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 ()
[/autoit] [autoit][/autoit] [autoit]
_BASS_Init (0, -1, 44100, 0, "")If @error Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "Error", "Could not initialize audio")
Exit
EndIfMsgBox (64,"BASS.au3:","Aktuelle Systemlautstärke: "&Round (_BASS_GetVolume()*100)&"%")
[/autoit] [autoit][/autoit] [autoit]Func OnAutoItExit()
[/autoit]
_BASS_Free()
EndFunc ;==>OnAutoItExitUnd 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. -
Wieso soll der Text lesbar sein, wenn du so wie so weißt was das Script reinschreibt?
-
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).
-
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. -
Scheinbar gibt WinGetHandle (WinGetTitle("C:\Windows")) immer den Handle des aktiven "cmd" Fensters zurück. Vielleicht hilft dir das ja weiter
-
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). -
95 Sekunden beim 2ten Versuch
http://img682.imageshack.us/i/95sekunden.png/
Wie zum Teufel hab ich das gemacht -
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.
-
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.
-
Das würde dann so aussehen:
Spoiler anzeigen
[autoit]Do
[/autoit]
$Msg = MsgBox (1, "Test - Fenster", "Das Fenster schließt in 5 Sekunden", 5)
Sleep (60000)
Until $Msg = 1
ExitSoweit ich weiß ist es nicht möglich eine MsgBox mit neuem Text zu aktualisieren. (Kann aber auch gut sein, dass ich mich irre ).
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
[/autoit]
$Msg = MsgBox (1, "Test - Fenster", "Das Fenster schließt in 5 Sekunden", 5)
If $Msg = 1 Then
Exit
EndIf
Sleep (6000)
WEnd -
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>
[/autoit] [autoit][/autoit] [autoit]
#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 ###HotKeySet ("{UP}","UP")
[/autoit] [autoit][/autoit] [autoit]
HotKeySet ("{DOWN}","DOWN")Do
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Until $nMsg = $GUI_EVENT_CLOSEFunc UP()
[/autoit] [autoit][/autoit] [autoit]
If _GUICtrlListBox_GetCurSel ($List1) = 0 Then
_GUICtrlListBox_SetCurSel ($List1,_GUICtrlListBox_GetCount ($List1)-1)
Else
_GUICtrlListBox_SetCurSel ($List1,_GUICtrlListBox_GetCurSel ($List1)-1)
EndIf
EndFuncFunc DOWN()
[/autoit]
If _GUICtrlListBox_GetCurSel ($List1) = _GUICtrlListBox_GetCount ($List1)-1 Then
_GUICtrlListBox_SetCurSel ($List1,0)
Else
_GUICtrlListBox_SetCurSel ($List1,_GUICtrlListBox_GetCurSel ($List1) +1)
EndIf
EndFunc