Hmm - Welches Betriebssystem hast du?
Beiträge von eukalyptus
-
-
Schau dir mal StdOutRead & Co an:
[ offen ] consolewrite and read -
Erstmal Danke für die Lorbeeren!
Wie ich bereits sagte ist das Script noch nicht spielbar.
Z.B. darf der Spieler die Z-Achse nicht beeinflussen; - Der Stein fällt von selber nach hinten.
Damit erübrigt sich dann auch das Problem, daß man die Steine ineinanderpacken kann.
Beim Rotieren fehlt noch die Kollisionsabfrage mit anderen Steinen...usw.Schwierigkeitsgrade werden so aussehen:
Man kann einstellen, wie groß das SPielfeld sein soll ( 3x3x6 -7x7x18 )
Es gibt 3 unterschiedliche Steinmodi (Flat, Basic, Extended)
Je höher das Level, desto schneller fällt der Stein
schwierigere Levels starten schon mit einer zufälligen Anordnung von SteinenIm Prinzip genauso wie das herkömmliche Tetris.
Die Jüngeren kennen wahrscheinlich das Original aus dem Jahre 1989 nicht.
Hier ein Screenshot:
autoit.de/wcf/attachment/9366/E
-
Vielleicht hilft dir _WinAPI_SetLayeredWindowAttributes weiter.
-
Hi
Mit den GDI+ Path Funktionen kann man ein paar ganz tolle Sachen machen.
Und da mich der 3D-Tunnel (GDI+ 3D-Tunnel) an Blockout erinnert hat, habe ich mal versucht das umzusetzen.Ist NICHT wirklich spielbar, da fehlt noch einiges...
Mit den Cursortasten bewegt man den Stein in X/Y-Richtung
Mit Enter und Backspace in Z-Richtung
Die Tasten QAWSED lassen den Stein rotieren
Und mit der Leertaste lässt man ihn nach hinten fallenautoit.de/wcf/attachment/9335/
folgende Includes werden benötigt:
autoit.de/wcf/attachment/9336/
autoit.de/wcf/attachment/9337/Mal sehen, ob ich irgendwann mal Lust habe ein fertiges Spiel daraus zu machen
viel Spaß
E
-
Falls es nur um 1D-Arrays geht und auch kein Index benötigt wird (also $aArray[0]=Anzahl der Einträge)
[autoit]
dann ist folgendes am schnellsten:Func _ArrayUnique_($aA)
[/autoit]
Local $aR, $oD = ObjCreate('Scripting.Dictionary')
For $i = 0 To UBound($aA) - 1
If Not $oD.Exists($aA[$i]) Then $oD.Add($aA[$i], 0)
Next
$aR = $oD.Keys()
Return $aR
EndFunc -
Yeeaahh!
Gefällt mir sehr gut! -
Hab das Script komplett überarbeitet.
Geschwindigkeit kann mit dem Mausrad geregelt werden und es gibt zusätzlich Würfel, die auf einen zufliegen.
Dafür hab ich momentan die Farbänderung herausgenommen...E
-
Hi
Eine weitere GDI+ Spielerei von mir:
autoit.de/wcf/attachment/9238/Das Tunnelende kann mit der Maus bewegt werden.
Und die Geschwindigkeit wird mit dem Mousewheel geregelt.folgende Includes werden benötigt:
autoit.de/wcf/attachment/9227/
autoit.de/wcf/attachment/9228/Viel Spaß
-
Hi
Viell. hilft dir das: http://web.slzm.de/blog/programmi…uch-episode-ii/
und auch das: http://translation.autoit.de/autoitinfo/hil…nd-24_03_10.zipDes weiteren ist es sehr hilfreich die "große" Version von Scite zu installieren: http://www.autoitscript.com/cgi-bin/getfil…iTE4AutoIt3.exe
mfgE
-
Du wirst doch wohl irgendwo eine CD herumliegen haben
-
Ich hab für einen Freund ein kurzes Script erstellt, welches eine Wav-Datei mit verschiedenen Encodern (Fraunhofer, Lame, Blade, Xing und Gogo) in MP3s (96,128,320 kbit/s) umwandelt .
Und das will ich auch euch nicht vorenthalten:Spoiler anzeigen
[autoit]$sFile = FileOpenDialog("Wähle .wav-Datei", @ScriptDir, "(*.wav)")
[/autoit] [autoit][/autoit] [autoit]
If @error Or Not $sFile Or Not FileExists($sFile) Then
MsgBox(0, "ERROR", ".Wav-Datei nicht gefunden!")
Exit
EndIf_Encode("Encoder: Gogo - 96 kBit/s", @ScriptDir & '\Encoders\gogo.exe -b 96 -m j "' & $sFile & '" "' & @ScriptDir & '\96_gogo.mp3"')
[/autoit] [autoit][/autoit] [autoit]
_Encode("Encoder: Gogo - 128 kBit/s", @ScriptDir & '\Encoders\gogo.exe -b 128 -m j "' & $sFile & '" "' & @ScriptDir & '\128_gogo.mp3"')
_Encode("Encoder: Gogo - 320 kBit/s", @ScriptDir & '\Encoders\gogo.exe -b 320 -m j "' & $sFile & '" "' & @ScriptDir & '\320_gogo.mp3"')_Encode("Encoder: Lame - 96 kBit/s", @ScriptDir & '\Encoders\lame.exe -mj -q0 --cbr -b96 "' & $sFile & '" "' & @ScriptDir & '\96_lame.mp3"')
[/autoit] [autoit][/autoit] [autoit]
_Encode("Encoder: Lame - 128 kBit/s", @ScriptDir & '\Encoders\lame.exe -mj -q0 --cbr -b128 "' & $sFile & '" "' & @ScriptDir & '\128_lame.mp3"')
_Encode("Encoder: Lame - 320 kBit/s", @ScriptDir & '\Encoders\lame.exe -mj -q0 --cbr -b320 "' & $sFile & '" "' & @ScriptDir & '\320_lame.mp3"')_Encode("Encoder: Blade - 96 kBit/s", @ScriptDir & '\Encoders\blade.exe -br 96 -q "' & $sFile & '" "' & @ScriptDir & '\96_blade.mp3"')
[/autoit] [autoit][/autoit] [autoit]
_Encode("Encoder: Blade - 128 kBit/s", @ScriptDir & '\Encoders\blade.exe -br 128 -q "' & $sFile & '" "' & @ScriptDir & '\128_blade.mp3"')
_Encode("Encoder: Blade - 320 kBit/s", @ScriptDir & '\Encoders\blade.exe -br 320 -q "' & $sFile & '" "' & @ScriptDir & '\320_blade.mp3"')_Encode("Encoder: Xing - 96 kBit/s", @ScriptDir & '\Encoders\xing.exe "' & $sFile & '" "' & @ScriptDir & '\96_xing.mp3" -b48')
[/autoit] [autoit][/autoit] [autoit]
_Encode("Encoder: Xing - 128 kBit/s", @ScriptDir & '\Encoders\xing.exe "' & $sFile & '" "' & @ScriptDir & '\128_xing.mp3" -b64')
_Encode("Encoder: Xing - 320 kBit/s", @ScriptDir & '\Encoders\xing.exe "' & $sFile & '" "' & @ScriptDir & '\320_xing.mp3" -b160')_Encode("Encoder: Fraunhofer - 96 kBit/s", @ScriptDir & '\Encoders\fhg.exe "' & $sFile & '" "' & @ScriptDir & '\96_fraunhofer.mp3" -br 96000 -hq')
[/autoit] [autoit][/autoit] [autoit]
_Encode("Encoder: Fraunhofer - 128 kBit/s", @ScriptDir & '\Encoders\fhg.exe "' & $sFile & '" "' & @ScriptDir & '\128_fraunhofer.mp3" -br 128000 -hq')
_Encode("Encoder: Fraunhofer - 320 kBit/s", @ScriptDir & '\Encoders\fhg.exe "' & $sFile & '" "' & @ScriptDir & '\320_fraunhofer.mp3" -br 320000 -hq')Func _Encode($sTitle, $sCmd)
[/autoit]
Local $iTimer = TimerInit()
Local $aRegExp = StringRegExp($sCmd, '"[^"]*"', 3)
If IsArray($aRegExp) And UBound($aRegExp) > 1 Then
$aRegExp = $aRegExp[1]
Else
$aRegExp = ""
EndIf
ProgressOn("Encoding to MP3", $sTitle, $aRegExp)
Local $foo = Run($sCmd, @SystemDir, @SW_HIDE, 0x8)
Local $line
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
$aRegExp = StringRegExp($line, "([0-9.]+)\h*%", 3)
If IsArray($aRegExp) Then ProgressSet($aRegExp[UBound($aRegExp) - 1])
WEnd
ConsoleWrite($sTitle & " Time: " & Round(TimerDiff($iTimer), 1) & "ms" & @LF)
Sleep(200)
ProgressOff()
EndFunc ;==>_EncodeEs ging darum zu zeigen, daß MP3 nicht gleich MP3 ist, sondern das Ergebnis sehr stark vom Encoder abhängt.
Man sieht auch schon an der Geschwindikeit, daß die Encoder unterschiedlich genau arbeiten.E
-
Hi
Sollte so funktionieren:
[autoit]_BASS_ChannelSetAttribute($hMusic, $BASS_ATTRIB_PAN, -1)
[/autoit][autoit][/autoit][autoit]
_BASS_ChannelPlay($hMusic, 1)While _BASS_ChannelIsActive($hMusic) = $BASS_ACTIVE_PLAYING
[/autoit][autoit][/autoit][autoit]
$iFreqOut = _GetFreq($hMusic)
$iFreqIn = _GetFreq($hRecord)
ToolTip("Frequenz Out: " & $iFreqOut & @LF & "Frequenz In: " & $iFreqIn)
Sleep(100)
WEnd_BASS_ChannelSetAttribute($hMusic, $BASS_ATTRIB_PAN, 1)
[/autoit][autoit][/autoit][autoit]
_BASS_ChannelPlay($hMusic, 1)While _BASS_ChannelIsActive($hMusic) = $BASS_ACTIVE_PLAYING
[/autoit]
$iFreqOut = _GetFreq($hMusic)
$iFreqIn = _GetFreq($hRecord)
ToolTip("Frequenz Out: " & $iFreqOut & @LF & "Frequenz In: " & $iFreqIn)
Sleep(100)
WEndmfgE
-
$CmdLine wird bereits berücksichtigt, aber $CmdLineRaw noch nicht...
-
Hiho Eukalyptus, hast mich endlich dazu gebracht mich hier auch anzumelden :). Vielen Dank für den netten PreProcessor, werd mal versuchen SMF mit ner vernünftigen Kombo an switches compiled zu bekommen. Ein kleiner Punkt ist mir bisher aufgefallen, $CmdLineRaw darf auch nicht umbenannt werden.
Gruß nach Wien :)...
Herzlich Willkommen hier im Forum!
Und Danke für $CmdLineRaw - kannte ich nocht nicht und hätte ich schon ein paar mal gebraucht.c.u.
-
Eine kleine Spielerei von mir.
autoit.de/wcf/attachment/9126/
folgende Includes werden benötigt:
autoit.de/wcf/attachment/9127/
autoit.de/wcf/attachment/9128/mfgE
-
Hab mich mal an weiteren Waveformen versucht...
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiComboBoxEx.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>;Das Script erstellt eine WAV-Datei im Speicher, spielt diese ab und speichert anschließend in eine Datei
[/autoit] [autoit][/autoit] [autoit];Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global Const $pi = 4 * ATan(1) ;pi=3,1415926....
[/autoit] [autoit][/autoit] [autoit]
Global $struct, $wavstruct, $sekunden, $samplingrate, $Channels, $samplefaktor
Global $freq_sliderold = 440, $volm_sliderold = 50$gui = GUICreate("Wave Generator ", 450, 450, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
;label
$freq_lbl = GUICtrlCreateLabel("Frequenz Hz", 16, 16, 64, 17)
$grph_lbl = GUICtrlCreateLabel("Wave Form", 16, 184, 59, 17)
$samp_lbl = GUICtrlCreateLabel("Sampling Bits/Sec", 16, 48, 90, 17)
$bits_lbl = GUICtrlCreateLabel("Bits per Sample", 16, 120, 90, 17)
$chan_lbl = GUICtrlCreateLabel("Channels", 16, 152, 48, 17)
$show_lbl = GUICtrlCreateLabel("Show Samples ", 16, 216, 77, 17)
$volm_lbl = GUICtrlCreateLabel("Volume", 16, 80, 39, 17);input
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $freq_inp = GUICtrlCreateInput("440.0", 120, 16, 81, 21, $ES_NUMBER)
Global $volm_inp = GUICtrlCreateInput("50", 120, 80, 81, 21, $ES_NUMBER)
;combo
$bits_cbo = GUICtrlCreateCombo("", 120, 120, 81, 25)
GUICtrlSetData(-1, "8|16|24", "16")
$samp_cbo = GUICtrlCreateCombo("", 120, 48, 81, 21)
GUICtrlSetData(-1, "8000|11025|12000|16000|22050|24000|32000|44100|48000", "44100")
$chan_cbo = GUICtrlCreateCombo("", 120, 152, 81, 25)
GUICtrlSetData(-1, "1|2|4", "1")
$form_cbo = GUICtrlCreateCombo("", 120, 184, 81, 25)
GUICtrlSetData(-1, "Sinus|Dreieck|Rechteck|Sägezahn aufsteigend|Sägezahn absteigend", "Sinus")
;slider
$freq_sld = GUICtrlCreateSlider(216, 16, 217, 25)
GUICtrlSetLimit($freq_sld, 20000, 1)
GUICtrlSetData($freq_sld, 441)
$volm_sld = GUICtrlCreateSlider(216, 80, 217, 25)
GUICtrlSetData($volm_sld, 100, 50)
GUICtrlSetData($volm_sld, 50)
;button
$test_btn = GUICtrlCreateButton("Test Channels", 224, 152, 105, 25, $WS_GROUP)
$play_btn = GUICtrlCreateButton("Play Wave", 16, 400, 129, 25, $WS_GROUP)
$save_btn = GUICtrlCreateButton("Save Wave to File", 160, 400, 129, 25, $WS_GROUP)
$exit_btn = GUICtrlCreateButton("Exit", 304, 400, 129, 25, $WS_GROUP)
;graphic
$graphic_line = GUICtrlCreateGraphic(16, 235, 420, 150)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While Sleep(20)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE, $exit_btn
Exit
Case $play_btn
If GUICtrlRead($play_btn) = "Stop playing" Then
GUICtrlSetData($play_btn, "Play Wave")
_playsound("") ;sound stoppen
Else
GUICtrlSetData($play_btn, "Stop playing")
_playwave(0) ;sound abspielen
EndIf
Case $GUI_EVENT_MOUSEMOVE
$mpos = GUIGetCursorInfo()
If $mpos[4] = $freq_sld And $mpos[2] Then _freq_sld() ;nur wenn maus über slider und mausbutton down, dann neue frequenz holen
If $mpos[4] = $volm_sld And $mpos[2] Then _volm_sld()
Case $save_btn
_playwave(1) ;sound speichern
EndSwitch
WEndFunc _playwave($save = 0) ;bei save=1 datei speichern
[/autoit] [autoit][/autoit] [autoit]$sekunden = 5 ;so lange soll der ton inb der abgespeicherten Datei abgespielt werden
[/autoit] [autoit][/autoit] [autoit]
$samplingrate = GUICtrlRead($samp_cbo) ;abtastungen pro sekunde
$BitsPerSample = GUICtrlRead($bits_cbo);guictrlread( ;8,16,24 äquivalent die "Farbtiefe bei einem Bild",
$Channels = GUICtrlRead($chan_cbo) ;1,2,4, Kanäle, mono, stereo usw
Local $iType, $nTemp
Switch GUICtrlRead($form_cbo)
Case "Square", "Rechteck"
$iType = 1
Case "Triangle", "Dreieck"
$iType = 2
Case "Sawtooth ascending", "Sägezahn aufsteigend"
$iType = 3
Case "Sawtooth descending", "Sägezahn absteigend"
$iType = 4
Case Else
$iType = 0
EndSwitch
ConsoleWrite("iType: " & $iType & @LF)$block = Int($Channels * $BitsPerSample / ;1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$bytes = $samplingrate * $block
$samplefaktor = $BitsPerSample / 8 ;lokale hilfsvariable
$filesize = $samplefaktor * $sekunden * $samplingrate * $Channels + 44 - 8;struktur mit dem Header einer WAV-Datei erstellen
[/autoit] [autoit][/autoit] [autoit]
Local $struct = DllStructCreate("byte[" & $samplefaktor * $sekunden * $samplingrate * $Channels + 44 & "]") ;platz für unser samplingLocal $s = "char RIFF [4];" & _ ;RIFF
[/autoit] [autoit][/autoit] [autoit]
"uint FileSize;" & _ ;Dateigröße-8 Bytes
"char WAVE [4];" & _ ;WAVE
"char fmt [4];" & _ ;fmt Header Signatur
"uint fmt_len;" & _ ;länge restl. fmt
"word Format;" & _ ;Datenformat s. Tabelle z.B. Wikipedia 1=PCM
"word Channels;" & _ ;Anzahl Kanäle 1=MONO
"uint Samplerate;" & _ ;Abtastrate pro Sekunde (22050)
"uint Bytes;" & _ ;Abtastrate * Block (22050)
"word Block;" & _ ;Channels * BitsPerSample / 8 (1)
"word BitsPerSample;" & _ ;8, 16, oder 24 (8)
"char DATA [4];" & _ ;DATA Header Signatur
"uint Len;" ;Länge des folgenden DatenblocksSwitch $samplefaktor ;je nach einstellungen platz für die wav-Daten reservieren
[/autoit] [autoit][/autoit] [autoit]
Case 1
$s &= "byte WAVDATA[" & $sekunden * $samplefaktor * $samplingrate * $Channels & "]"
Case 2
$s &= "word WAVDATA[" & $sekunden * $samplefaktor * $samplingrate * $Channels & "]"
Case 4
$s &= "dword WAVDATA[" & $sekunden * $samplefaktor * $samplingrate * $Channels & "]"
EndSwitchLocal $wavstruct = DllStructCreate($s, DllStructGetPtr($struct)) ;struct "überlagern" damit alle Daten byteweise in eine Datei geschrieben werden können
[/autoit] [autoit][/autoit] [autoit];Unsere Daten für die Sinuswelle
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$f = GUICtrlRead($freq_inp) ;frequenz in hertz
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $f = ' & $f & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$w = 2 * $pi * $f ;omega=2*pi*f für Maschinenbauer gilt: OMEGA das weiß ich, Pi mal N durch dreißig!!! :o)
ConsoleWrite("!W: " & $w & @LF)
$Amplitude = (GUICtrlRead($volm_inp) * 1.81019) ^ $samplefaktor ;Lautstärke, bei 8 bit maximal 2^8, bei 16 bit maximal 2^16
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Amplitude = ' & $Amplitude & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$i = 0 ;anzahl der geschriebenen bytes (funktionswerte)
If $save = 1 Then
$f = 1 / $sekunden ;falls gespeichert werden soll, anzahl Sekunden festlegen
Else
GUICtrlDelete($graphic_line) ;grafik kurven-linien löschen
GUICtrlSetColor($graphic_line, 0)
$graphic_line = GUICtrlCreateGraphic(16, 235, 420, 150) ;kurven-linien
GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, 75)
GUICtrlSetGraphic($graphic_line, $GUI_GR_LINE, 420, 75)GUICtrlSetColor($graphic_line, 0xFF0000)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($graphic_line, 0xFFFFFF)
GUICtrlSetGraphic($graphic_line, $GUI_GR_COLOR, 0xFF0000, 0xFFFFF0)
;GUICtrlSetGraphic($graphic_line, $GUI_GR_RECT, 0, 0, 20, 150)EndIf
[/autoit] [autoit][/autoit] [autoit]
;hier gehts los, wir erstellen eine komplette sinuswelle, diese wird so lange wiederholt, bis die Abspieldauer in sekunden erreicht ist
For $t = 0 To 1 / $f Step 1 / $samplingrate ;samplingrate y(t)-Werte ()Amplituden) ermitteln
$i += 1 ;anzahl der samples
$yt = Int($Amplitude * Sin($w * $t)) ;unsere altbekannte formel
Switch $iType
Case 0 ; Sine
Case 1 ; Square
Switch $yt
Case 0 To $Amplitude
$yt = $Amplitude
Case Else
$yt = -$Amplitude
EndSwitch
Case 2 ; Triangle
$nTemp = Mod($w * $t, $pi) / $pi
Switch $nTemp
Case 0 To 0.5
$nTemp = $Amplitude * $nTemp * 2
Case Else
$nTemp = $Amplitude * (1 - $nTemp) * 2
EndSwitch
Switch $yt
Case 0 To $Amplitude
$yt = $nTemp
Case Else
$yt = -$nTemp
EndSwitch
Case 3 ; Sawtooth ascending
$nTemp = Mod($w * $t, $pi * 2) / ($pi * 2)
$yt = $Amplitude * (-1 + $nTemp * 2)
Case 4 ; Sawtooth descending
$nTemp = Mod($w * $t, $pi * 2) / ($pi * 2)
$yt = $Amplitude * (1 - $nTemp * 2)
EndSwitch
If $i < 210 Then ConsoleWrite($i & " " & $yt & @CRLF)
DllStructSetData($wavstruct, "WAVDATA", $yt, $i) ;schreiben von y(t) in die struct
If $save = 0 Then ;wenn speichern gewählt, keine welle zeichnen
GUICtrlSetGraphic($graphic_line, $GUI_GR_MOVE, Int(420 * $f * $t), 75) ;punkt auf x-achse
GUICtrlSetGraphic($graphic_line, $GUI_GR_LINE, Int($t * 420 * $f), Int(75 - ($yt / $Amplitude * 75 * GUICtrlRead($volm_inp) / 100))) ;linie zeichnen (hoehe y(t))
EndIfIf $Channels = 2 Then ;wenn 2 kanäle (stereo), dann das byte für den 2. Kanal hinzufügen
[/autoit] [autoit][/autoit] [autoit]
$i += 1
DllStructSetData($wavstruct, "WAVDATA", $yt, $i)
EndIf
Next
GUICtrlSetGraphic($graphic_line, $GUI_GR_REFRESH)
;jetzt werden die Daten in die struct geschrieben, es entsteht eine WAV-Datei im Speicher
DllStructSetData($wavstruct, "RIFF", "RIFF")
DllStructSetData($wavstruct, "FileSize", $filesize)
DllStructSetData($wavstruct, "WAVE", "WAVE")
DllStructSetData($wavstruct, "fmt", "fmt ")
DllStructSetData($wavstruct, "fmt_len", 16)
DllStructSetData($wavstruct, "Format", 1) ;PCM
DllStructSetData($wavstruct, "Channels", $Channels)
DllStructSetData($wavstruct, "Samplerate", $samplingrate)
DllStructSetData($wavstruct, "Bytes", $bytes) ;samplerate*block
DllStructSetData($wavstruct, "Block", $block)
DllStructSetData($wavstruct, "BitsPerSample", $BitsPerSample)
DllStructSetData($wavstruct, "DATA", "data")
DllStructSetData($wavstruct, "Len", ($samplingrate / $f * $Channels * $samplefaktor));hier wird NUR DIE LÄNGE DER ERSTEN SINUSWELLE eingetragen, um den Sound im speicher abzuspielen
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : ($samplingrate / $f * $Channels * $samplefaktor) = ' & ($samplingrate / $f * $Channels * $samplefaktor) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console;~ $data = ""
[/autoit] [autoit][/autoit] [autoit]
;~ For $i = 1 To 14 ;anzeigen des WAV-Headers
;~ $data &= DllStructGetData($wavstruct, $i) & @CRLF
;~ Next
;MsgBox(0, "Daten WAV-Header", StringLeft($data, 100))If $save = 0 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_playsound("") ;aktuellen sound beenden
_Playsound(DllStructGetPtr($wavstruct), 1) ;abspielen des sounds aus dem speicher, Ton wird immer wiederholt
Else
$sdat = DllStructGetData($struct, 1) ;struktur in eine Datei schreiben
$wavdata = StringLeft(BinaryToString($sdat), $sekunden * $samplingrate * $Channels * $samplefaktor + 44)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $wavdata = ' & StringLen($wavdata) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$wav = FileOpen("test1.wav", 18)
$bindata = FileWrite($wav, $wavdata)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bindata = ' & $bindata & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
FileClose($wav)
ShellExecute("test1.wav") ;wavedatei abspielen
EndIf
;Msgbox(0,"Ton mit Frequenz "&$f&" Hz","Spieldauer "&$sekunden&" Sekunden",$sekunden)
EndFunc ;==>_playwaveFunc _freq_sld()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($freq_sld) = $freq_sliderold Then Return
$freq_sliderold = GUICtrlRead($freq_sld)
GUICtrlSetData($freq_inp, GUICtrlRead($freq_sld))
If GUICtrlRead($play_btn) = "Stop playing" Then _playwave()
EndFunc ;==>_freq_sldFunc _volm_sld()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($volm_sld) = $volm_sliderold Then Return
$volm_sliderold = GUICtrlRead($freq_sld)
GUICtrlSetData($volm_inp, GUICtrlRead($volm_sld))
If GUICtrlRead($play_btn) = "Stop playing" Then _playwave()
EndFunc ;==>_volm_sldFunc _PlaySound($sSoundFile, $mem = 0) ;mem=1 spielt sound aus dem speicher, dann muss $sSoundfile der pointer zum anfang der struct sein
[/autoit] [autoit][/autoit] [autoit]
Local Const $SND_ALIAS = 0x10000
Local Const $SND_ALIAS_ID = 0x110000
Local Const $SND_APPLICATION = 0x80
Local Const $SND_ASYNC = 0x1
Local Const $SND_FILENAME = 0x20000
Local Const $SND_LOOP = 0x8
Local Const $SND_MEMORY = 0x4
Local Const $SND_NODEFAULT = 0x2
Local Const $SND_NOSTOP = 0x10
Local Const $SND_NOWAIT = 0x2000
Local Const $SND_PURGE = 0x40
Local Const $SND_RESOURCE = 0x40004
Local Const $SND_SYNC = 0x0
If $sSoundFile = "" Then
DllCall('winmm.dll', 'int', 'PlaySoundA', 'ptr', 0, 'int', 0, 'int', 0)
Return
EndIf
If $mem = 1 Then
$a = DllCall('winmm.dll', 'int', 'PlaySoundA', 'ptr', $sSoundFile, 'int', 0, 'int', BitOR(4, 1, 8))Else
[/autoit]
$a = DllCall('winmm.dll', 'int', 'PlaySoundA', 'str', $sSoundFile, 'int', 0, 'int', BitOR(1, 2, 0x10))
EndIf
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a[0] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
EndFunc ;==>_PlaySound -
Ja, das weiß ich.
Der Prozess wird erst beendet, wenn das BS-Einstellungsfenster geschlossen wird, oder eine andere Instanz vom BS (Preview, Config, Fullscreen...) gestartet wird.
Ich hab leider noch nicht herausgefunden, wie ich besser erkennen kann, daß der BS beendet werden soll.Normalerweise sollte doch Windows irgendeine Message schicken!?
E
-
Ich habe etwas experimentiert mit der _GDIPlus_TextureCreate Funktion aus GDI+ Kreisförmiger Ausschnitt einer Bitmap
und daraus ist dann dieser Bildschirmschoner entstandenKompilieren, Rechtsklick auf Datei -> Installieren
Man landet direkt in den Bildschirmschoner-Eigenschaften und sollte dort das Script im Previewfenster bereits in Aktion sehen(Die .EXE wird nach dem Kompilieren automatisch in .SCR umbenannt; sollte dem nicht so sein, dann muß man das manuell machen)
Spoiler anzeigen
[autoit]#AutoIt3Wrapper_Run_After="CMD.exe /c del "%scriptdir%\%scriptfile%.scr""
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Run_After="CMD.exe /c rename "%scriptdir%\%scriptfile%.exe" "%scriptfile%.scr""
#NoTrayIcon#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
#include <SendMessage.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>While WinExists("Eukalyptus Bubble ScreenSaver")
[/autoit] [autoit][/autoit] [autoit]
$hWnd = WinGetHandle("Eukalyptus Bubble ScreenSaver")
_SendMessage($hWnd, $WM_DESTROY)
WinWaitClose("Eukalyptus Bubble ScreenSaver", "", 2)
WEndGlobal $iMode = 0, $hParent, $aTemp, $sCmdLine = ""
[/autoit] [autoit][/autoit] [autoit]
Global $iWidth = @DesktopWidth
Global $iHeight = @DesktopHeight
Global $iGuiX = 0, $iGuiY = 0, $iGuiW = $iWidth, $iGuiH = $iHeightGlobal $iBubbleCnt = RegRead("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleCount")
[/autoit] [autoit][/autoit] [autoit]
If Not $iBubbleCnt Then $iBubbleCnt = 50
If $iBubbleCnt < 1 Then $iBubbleCnt = 1
If $iBubbleCnt > 200 Then $iBubbleCnt = 200Global $iBubbleSizeMin = RegRead("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSizeMin")
[/autoit] [autoit][/autoit] [autoit]
If Not $iBubbleSizeMin Then $iBubbleSizeMin = 50
If $iBubbleSizeMin < 10 Then $iBubbleSizeMin = 10
If $iBubbleSizeMin > 499 Then $iBubbleSizeMin = 499Global $iBubbleSizeMax = RegRead("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSizeMax")
[/autoit] [autoit][/autoit] [autoit]
If Not $iBubbleSizeMax Then $iBubbleSizeMax = 200
If $iBubbleSizeMax <= $iBubbleSizeMin Then $iBubbleSizeMax = $iBubbleSizeMin + 1
If $iBubbleSizeMax > 500 Then $iBubbleSizeMax = 500Global $iBubbleSpeedMin = RegRead("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSpeedMin")
[/autoit] [autoit][/autoit] [autoit]
If Not $iBubbleSpeedMin Then $iBubbleSpeedMin = 2
If $iBubbleSpeedMin < 1 Then $iBubbleSpeedMin = 1
If $iBubbleSpeedMin > 49 Then $iBubbleSpeedMin = 49Global $iBubbleSpeedMax = RegRead("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSpeedMax")
[/autoit] [autoit][/autoit] [autoit]
If Not $iBubbleSpeedMax Then $iBubbleSpeedMax = 10
If $iBubbleSpeedMax <= $iBubbleSpeedMin Then $iBubbleSpeedMax = $iBubbleSpeedMin + 1
If $iBubbleSpeedMax > 50 Then $iBubbleSpeedMax = 50Global $iBubbleFillMode = RegRead("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleFillMode")
[/autoit] [autoit][/autoit] [autoit]
If Not $iBubbleFillMode Then $iBubbleFillMode = 4Global $aBubble[201][4]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $iBubbleCnt
$aBubble[$i][0] = Random(0, $iWidth, 1)
$aBubble[$i][1] = Random(0, $iHeight, 1) + $iHeight
$aBubble[$i][2] = Random($iBubbleSizeMin, $iBubbleSizeMax, 1)
$aBubble[$i][3] = Random($iBubbleSpeedMin, $iBubbleSpeedMax)
NextSwitch $CmdLine[0]
[/autoit] [autoit][/autoit] [autoit]
Case 0
Exit
Case Else
For $i = 1 To $CmdLine[0]
$sCmdLine &= $CmdLine[$i]
Next
$aTemp = StringRegExp($sCmdLine, "/(\w)", 1)
If @error Or Not IsArray($aTemp) Then Exit
Switch $aTemp[0]
Case "c"
$iMode = 2
Case "p"
$iMode = 3
Case "s"
$iMode = 1
Case Else
Exit
EndSwitch
Switch $iMode
Case 1
$hParent = _WinAPI_GetDesktopWindow()
Case Else
$aTemp = StringRegExp($sCmdLine, "\d+", 1)
If @error Or Not IsArray($aTemp) Then Exit
$hParent = HWnd($aTemp[0])
EndSwitch
EndSwitchSwitch $iMode
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Case 2 ; Config
$iGuiW = 270
$iGuiH = 330
$iGuiX = $iWidth / 2 - $iGuiW / 2
$iGuiY = $iHeight / 2 - $iGuiH / 2
Case 3 ; Preview
Local $aPos = WinGetPos($hParent)
If @error Or Not IsArray($aPos) Then Exit
$iGuiX = $aPos[0]
$iGuiY = $aPos[1]
$iGuiW = $aPos[2]
$iGuiH = $aPos[3]
EndSwitchGlobal $hBmp = _ScreenCapture_Capture("", 0, 0, $iWidth, $iHeight, False)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()Global $hUser32dll = DllOpen("User32.dll")
[/autoit] [autoit][/autoit] [autoit]Switch $iMode
[/autoit] [autoit][/autoit] [autoit]
Case 2 ; Config
Global $hGui = GUICreate("Eukalyptus Bubble ScreenSaver", $iGuiW, $iGuiH, $iGuiX, $iGuiY, Default, $WS_EX_TOPMOST, $hParent)
GUICtrlCreateLabel("Anzahl der Blasen:", 10, 10, $iGuiW - 50, 20)
Global $hSliderCnt = GUICtrlCreateSlider(10, 30, $iGuiW - 20, 20)
GUICtrlSetLimit(-1, 200, 1)
GUICtrlSetData(-1, $iBubbleCnt)
Global $hLabelCnt = GUICtrlCreateLabel($iBubbleCnt, $iGuiW - 100, 10, 90, 20, $SS_RIGHT)GUICtrlCreateLabel("Minimale Größe der Blasen:", 10, 60, $iGuiW - 50, 20)
[/autoit] [autoit][/autoit] [autoit]
Global $hSliderSizeMin = GUICtrlCreateSlider(10, 80, $iGuiW - 20, 20)
GUICtrlSetLimit(-1, 499, 10)
GUICtrlSetData(-1, $iBubbleSizeMin)
Global $hLabelSizeMin = GUICtrlCreateLabel($iBubbleSizeMin, $iGuiW - 50, 60, 40, 20, $SS_RIGHT)GUICtrlCreateLabel("Maximale Größe der Blasen:", 10, 110, $iGuiW - 50, 20)
[/autoit] [autoit][/autoit] [autoit]
Global $hSliderSizeMax = GUICtrlCreateSlider(10, 130, $iGuiW - 20, 20)
GUICtrlSetLimit(-1, 500, 11)
GUICtrlSetData(-1, $iBubbleSizeMax)
Global $hLabelSizeMax = GUICtrlCreateLabel($iBubbleSizeMax, $iGuiW - 50, 110, 40, 20, $SS_RIGHT)GUICtrlCreateLabel("Minimale Geschwindigkeit der Blasen:", 10, 160, $iGuiW - 50, 20)
[/autoit] [autoit][/autoit] [autoit]
Global $hSliderSpeedMin = GUICtrlCreateSlider(10, 180, $iGuiW - 20, 20)
GUICtrlSetLimit(-1, 49, 1)
GUICtrlSetData(-1, $iBubbleSpeedMin)
Global $hLabelSpeedMin = GUICtrlCreateLabel($iBubbleSpeedMin, $iGuiW - 50, 160, 40, 20, $SS_RIGHT)GUICtrlCreateLabel("Maximale Geschwindigkeit der Blasen:", 10, 210, $iGuiW - 50, 20)
[/autoit] [autoit][/autoit] [autoit]
Global $hSliderSpeedMax = GUICtrlCreateSlider(10, 230, $iGuiW - 20, 20)
GUICtrlSetLimit(-1, 50, 2)
GUICtrlSetData(-1, $iBubbleSpeedMax)
Global $hLabelSpeedMax = GUICtrlCreateLabel($iBubbleSpeedMax, $iGuiW - 50, 210, 40, 20, $SS_RIGHT)Global $hCheckbox=GUICtrlCreateCheckbox("Keine Füllung bei Überschneidung",10,260,$iGuiW-20,20)
[/autoit] [autoit][/autoit] [autoit]
If $iBubbleFillMode = 1 Then GUICtrlSetState($hCheckbox, $GUI_CHECKED)Global $hButtonSave = GUICtrlCreateButton("OK", 10, 300, $iGuiW / 2 - 20, 20)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $hButtonExit = GUICtrlCreateButton("Abbrechen", $iGuiW / 2 + 10, 300, $iGuiW / 2 - 20, 20)
Case Else
Global $hGui = GUICreate("Eukalyptus Bubble ScreenSaver", $iGuiW, $iGuiH, $iGuiX, $iGuiY, $WS_POPUP, $WS_EX_TOPMOST, $hParent)
EndSwitchSwitch $iMode
[/autoit] [autoit][/autoit] [autoit]
Case 3
Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hParent)
GUISetState(@SW_HIDE)
Case Else
Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
GUISetState(@SW_SHOW)
EndSwitchGlobal $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)
[/autoit] [autoit][/autoit] [autoit]
Global $hBrush = _GDIPlus_TextureCreate($hBitmap)
Global $hBrushTrans = _GDIPlus_BrushCreateSolid(0xF6000010)
Global $hBmpBuffer = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
Global $hGfxBuffer = _GDIPlus_ImageGetGraphicsContext($hBmpBuffer)
Global $hPen = _GDIPlus_PenCreate(0xFF101000)Global $iTimer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]If $iMode = 1 Then
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_MOUSEMOVE, "WM_MOUSEMOVE")
_WinAPI_ShowCursor(False)
EndIfIf $iMode <> 2 Then
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_PAINT, "WM_PAINT")
GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")
EndIfGUIRegisterMsg($WM_DESTROY, "WM_DESTROY")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Switch $iMode
Case 2 ; Config
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
_Exit()
Case $hSliderCnt
$iBubbleCnt = GUICtrlRead($hSliderCnt)
GUICtrlSetData($hLabelCnt, $iBubbleCnt)
Case $hSliderSizeMin
$iBubbleSizeMin = GUICtrlRead($hSliderSizeMin)
If $iBubbleSizeMin >= $iBubbleSizeMax Then
$iBubbleSizeMin = $iBubbleSizeMax - 1
GUICtrlSetData($hSliderSizeMin, $iBubbleSizeMin)
EndIf
GUICtrlSetData($hLabelSizeMin, $iBubbleSizeMin)
Case $hSliderSizeMax
$iBubbleSizeMax = GUICtrlRead($hSliderSizeMax)
If $iBubbleSizeMax <= $iBubbleSizeMin Then
$iBubbleSizeMax = $iBubbleSizeMin + 1
GUICtrlSetData($hSliderSizeMax, $iBubbleSizeMax)
EndIf
GUICtrlSetData($hLabelSizeMax, $iBubbleSizeMax)
Case $hSliderSpeedMin
$iBubbleSpeedMin = GUICtrlRead($hSliderSpeedMin)
If $iBubbleSpeedMin >= $iBubbleSpeedMax Then
$iBubbleSpeedMin = $iBubbleSpeedMax - 1
GUICtrlSetData($hSliderSpeedMin, $iBubbleSpeedMin)
EndIf
GUICtrlSetData($hLabelSpeedMin, $iBubbleSpeedMin)
Case $hSliderSpeedMax
$iBubbleSpeedMax = GUICtrlRead($hSliderSpeedMax)
If $iBubbleSpeedMax <= $iBubbleSpeedMin Then
$iBubbleSpeedMax = $iBubbleSpeedMin + 1
GUICtrlSetData($hSliderSpeedMax, $iBubbleSpeedMax)
EndIf
GUICtrlSetData($hLabelSpeedMax, $iBubbleSpeedMax)
Case $hCheckbox
$iBubbleFillMode=GUICtrlRead($hCheckbox)
If $iBubbleFillMode <> 1 And $iBubbleFillMode <> 4 Then $iBubbleFillMode = 4
Case $hButtonExit
_Exit()
Case $hButtonSave
RegWrite("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleCount", "REG_DWORD", $iBubbleCnt)
RegWrite("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSizeMin", "REG_DWORD", $iBubbleSizeMin)
RegWrite("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSizeMax", "REG_DWORD", $iBubbleSizeMax)
RegWrite("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSpeedMin", "REG_DWORD", $iBubbleSpeedMin)
RegWrite("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleSpeedMax", "REG_DWORD", $iBubbleSpeedMax)
RegWrite("HKEY_CURRENT_USER\SOFTWARE\BubbleScreenSaver", "BubbleFillMode", "REG_DWORD", $iBubbleFillMode)
_Exit()
EndSwitch
Case Else
If TimerDiff($iTimer) > 20 Then
If $iMode = 3 And Not WinExists($hParent) Then _Exit()
$iTimer = TimerInit()
_Bubbles()
EndIf
EndSwitch
WEndFunc WM_DESTROY($hWnd, $uMsgm, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_Exit()
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_DESTROYFunc WM_PAINT($hWnd, $uMsgm, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
_Draw()
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINTFunc WM_ERASEBKGND($hWnd, $uMsgm, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
_Draw()
Return True
EndFunc ;==>WM_ERASEBKGNDFunc _Draw()
[/autoit] [autoit][/autoit] [autoit]
Switch $iMode
Case 1 ; FullScreen
_GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
Case 3 ; Preview
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBmpBuffer, 0, 0, $iGuiW, $iGuiH)
EndSwitch
EndFunc ;==>_DrawFunc _Bubbles()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If $iBubbleFillMode = 1 Then Local $hPath = _GDIPlus_CreatePath()
Local $sKeyBoard = _GetKeyboardState()
Local Static $sKeyBoard_Old = $sKeyBoard
If $iMode = 1 And $sKeyBoard_Old <> $sKeyBoard Then _Exit()
$sKeyBoard_Old = $sKeyBoard
_GDIPlus_GraphicsDrawImage($hGfxBuffer, $hBitmap, 0, 0)
_GDIPlus_GraphicsFillRect($hGfxBuffer, 0, 0, $iWidth, $iHeight, $hBrushTrans)
For $i = 1 To $iBubbleCnt
If $aBubble[$i][1] + $aBubble[$i][2] / 2 < 0 Then
$aBubble[$i][0] = Random(0, $iWidth, 1)
$aBubble[$i][2] = Random($iBubbleSizeMin, $iBubbleSizeMax, 1)
$aBubble[$i][1] = $iHeight + $aBubble[$i][2] / 2
$aBubble[$i][3] = Random($iBubbleSpeedMin, $iBubbleSpeedMax)
EndIf
$aBubble[$i][1] -= $aBubble[$i][3]
Switch $iBubbleFillMode
Case 1
_GDIPlus_AddPathEllipse($hPath,$aBubble[$i][0] - $aBubble[$i][2] / 2, $aBubble[$i][1] - $aBubble[$i][2] / 2, $aBubble[$i][2], $aBubble[$i][2])
Case Else
_GDIPlus_GraphicsFillEllipse($hGfxBuffer, $aBubble[$i][0] - $aBubble[$i][2] / 2, $aBubble[$i][1] - $aBubble[$i][2] / 2, $aBubble[$i][2], $aBubble[$i][2], $hBrush)
_GDIPlus_GraphicsDrawEllipse($hGfxBuffer, $aBubble[$i][0] - $aBubble[$i][2] / 2, $aBubble[$i][1] - $aBubble[$i][2] / 2, $aBubble[$i][2], $aBubble[$i][2], $hPen)
EndSwitch
Next
If $iBubbleFillMode = 1 Then
_GDIPlus_ClosePathFigure($hPath)
_GDIPlus_FillPath($hGfxBuffer, $hBrush, $hPath)
_GDIPlus_PathDispose($hPath)
EndIf
_Draw()
EndFunc ;==>_BubblesFunc _GDIPlus_CreatePath($brushMode = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $hPath
$hPath = DllCall($ghGDIPDll, "int", "GdipCreatePath", "int", $brushMode, "handle*", 0)
If @error Then Return SetError(1, @error, 0)
Return SetError($hPath[0], 0, $hPath[2])
EndFunc ;==>_GDIPlus_CreatePathFunc _GDIPlus_AddPathEllipse($hPath, $iX, $iY, $iWidth, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "int", "GdipAddPathEllipse", "handle", $hPath, "float", $iX, "float", $iY, "float", $iWidth, "float", $iHeight)
If @error Then Return SetError(1, @error, 0)
Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc ;==>_GDIPlus_AddPathEllipseFunc _GDIPlus_FillPath($hGraphic, $hBrushGrad, $hPath)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "int", "GdipFillPath", "handle", $hGraphic, "handle", $hBrushGrad, "handle", $hPath)
If @error Then Return SetError(1, @error, 0)
Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc ;==>_GDIPlus_FillPathFunc _GDIPlus_ClosePathFigure($hPath)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "int", "GdipClosePathFigure", "handle", $hPath)
If @error Then Return SetError(1, @error, 0)
Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc ;==>_GDIPlus_ClosePathFigureFunc _GDIPlus_PathDispose($hPath)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipDeletePath", "handle", $hPath)
If @error Then Return SetError(1, @error, 0)
Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc ;==>_GDIPlus_PathDisposeFunc WM_MOUSEMOVE($hWnd, $uMsgm, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
If $iMode <> 1 Then Return 0
Local $iMouseX = MouseGetPos(0)
Local $iMouseY = MouseGetPos(1)
Local Static $iMouseX_Old = $iMouseX
Local Static $iMouseY_Old = $iMouseY
If $hWnd = $hGui Then
If $iMouseX < $iMouseX_Old - 3 Or $iMouseX > $iMouseX_Old + 3 Or $iMouseY < $iMouseY_Old - 3 Or $iMouseY > $iMouseY_Old + 3 Then _Exit()
$iMouseX_Old = $iMouseX
$iMouseY_Old = $iMouseY
EndIf
Return 0
EndFunc ;==>WM_MOUSEMOVEFunc _GetKeyboardState()
[/autoit] [autoit][/autoit] [autoit]
Local $sReturn = ""
Local $lpKeyState = DllStructCreate("byte[256]")
Local $aRet = DllCall($hUser32dll, "int", "GetKeyboardState", "ptr", DllStructGetPtr($lpKeyState))
For $i = 1 To 256
$sReturn &= DllStructGetData($lpKeyState, 1, $i)
Next
Return $sReturn
EndFunc ;==>_GetKeyboardState; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _GDIPlus_TextureCreate
; Description ...: Creates a TextureBrush object based on an image and a wrap mode
; Syntax.........: _GDIPlus_TextureCreate($hImage[, $iWrapMode = 0])
; Parameters ....: $hImage - Pointer to an Image object
; $iWrapMode - Wrap mode that specifies how repeated copies of an image are used to tile an area when it is
; +painted with the texture brush:
; |0 - Tiling without flipping
; |1 - Tiles are flipped horizontally as you move from one tile to the next in a row
; |2 - Tiles are flipped vertically as you move from one tile to the next in a column
; |3 - Tiles are flipped horizontally as you move along a row and flipped vertically as you move along a column
; |4 - No tiling takes place
; Return values .: Success - Pointer to a new TextureBrush object
; Failure - 0 and either:
; |@error and @extended are set if DllCall failed
; |$GDIP_STATUS contains a non zero value specifying the error code
; Remarks .......: The size of the brush defaults to the size of the image, so the entire image is used by the brush
; After you are done with the object, call _GDIPlus_BrushDispose to release the object resources
; Related .......: _GDIPlus_BrushDispose
; Link ..........; @@MsdnLink@@ GdipCreateTexture
; Example .......; No
; ===============================================================================================================================
Func _GDIPlus_TextureCreate($hImage, $iWrapMode = 0)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateTexture", "hwnd", $hImage, "int", $iWrapMode, "int*", 0)If @error Then Return SetError(@error, @extended, 0)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[3]
EndFunc ;==>_GDIPlus_TextureCreateFunc _Exit()
[/autoit]
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BrushDispose($hBrushTrans)
_GDIPlus_GraphicsDispose($hGfxBuffer)
_GDIPlus_BitmapDispose($hBmpBuffer)
_WinAPI_DeleteObject($hBmp)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
DllClose($hUser32dll)
GUIDelete($hGui)
_WinAPI_ShowCursor(True)
Exit
EndFunc ;==>_ExitViel Spaß
-
Moment, ihr verwechselt da was!
Bei Beep wird die Sinusberechnung automatisch durchgeführt und man muß nur die Frequenz angeben.
Selber berechnen und über die SOundkarte ausgeben ist etwas komplizierter
Beispiel: SinusTon - Synth mit Bass.dllmfgE