Hallo chip,
[autoit]Opt('MustDeclareVars', 1)
[/autoit]mfg (Auto)Bert
Hallo chip,
[autoit]Opt('MustDeclareVars', 1)
[/autoit]mfg (Auto)Bert
Hallo Goldy,
hier das geänderte Skript:
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.4.0
Author: Goldy
Script Function:
Calculator.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit];============================
;======Beispiel - Goldy======
;============================
;$zahl1 = InputBox ("Zahl1","Hier bitte die erste Zahl eingeben")
;$zahl2 = InputBox ("Zahl2","Geben sie nun hier die zweite Zahl ein")
;$zahl3 = $zahl1 - $zahl2
;MsgBox (0,"Ergebnis",$zahl3)
;=============================
;=============================
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Calculator", 292, 139, 862, 127)
$Button1 = GUICtrlCreateButton("Addition", 8, 8, 81, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Subtraktion", 104, 8, 97, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Multiplikation", 8, 40, 81, 25, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Division", 104, 40, 97, 25, $WS_GROUP)
$Button5 = GUICtrlCreateButton("Satz des Pythagoras", 8, 72, 193, 25, $WS_GROUP)
$Button6 = GUICtrlCreateButton("Prozentrechnung", 8, 104, 193, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button1
$zahl1 = InputBox ("Zahl1","Hier bitte die erste Zahl eingeben")
$zahl2 = InputBox ("Zahl2","Geben sie nun hier die zweite Zahl ein")
$zahl3 = $zahl1 + $zahl2
MsgBox (0,"Ergebnis",$zahl3)
Case $Button2
$zahl1 = InputBox ("Zahl1","Hier bitte die erste Zahl eingeben")
$zahl2 = InputBox ("Zahl2","Geben sie nun hier die zweite Zahl ein")
$zahl3 = $zahl1 - $zahl2
MsgBox (0,"Ergebnis",$zahl3)
Case $Button3
$zahl1 = InputBox ("Zahl1","Hier bitte die erste Zahl eingeben")
$zahl2 = InputBox ("Zahl2","Geben sie nun hier die zweite Zahl ein")
$zahl3 = $zahl1 * $zahl2
MsgBox (0,"Ergebnis",$zahl3)
Case $Button4
$zahl1 = InputBox ("Zahl1","Hier bitte die erste Zahl eingeben")
$zahl2 = InputBox ("Zahl2","Geben sie nun hier die zweite Zahl ein")
$zahl3 = $zahl1 / $zahl2
MsgBox (0,"Ergebnis",$zahl3)
Case $Button5
$zahl1 = InputBox ("Zahl1","Hier bitte die erste Zahl eingeben")
$zahl2 = InputBox ("Zahl2","Geben sie nun hier die zweite Zahl ein")
$zahl3 = $zahl1*$zahl1 + $zahl2*$zahl2
MsgBox (0,"Ergebnis",$zahl3)
Case $Button6
_ProzentRechnen()
EndSwitch
WEnd
Func _ProzentRechnen()
#Region ### START Koda GUI section ### Form=E:\Programme\AutoIt3\SciTE\Koda\Forms\Prozentrechnung.kxf
$Form2 = GUICreate("Prozentrechngung", 496, 82, 390, 243)
$Button7 = GUICtrlCreateButton("Grundwert (G)", 8, 8, 145, 25, $WS_GROUP)
$Button8 = GUICtrlCreateButton("Prozentwert (W)", 168, 8, 145, 25, $WS_GROUP)
$Button9 = GUICtrlCreateButton("Prozentsatz (p)", 328, 8, 145, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button7
$zahl1 = InputBox ("Zahl1","Hier bitte den Grundwert eingeben")
$zahl2 = InputBox ("Zahl2","Geben sie nun hier den Prozentsatz ein")
$zahl3 = $zahl1 * $zahl2
$zahl4 = $zahl3 / 100
MsgBox (0,"Ergebnis",$zahl4)
EndSwitch
WEnd
GUIDelete($Form2)
EndFunc
viel Spass damit,
mfg (Auto)Bert
Hallo Goldy,
herzlich willkommen im Forum und viel Spass mit AutoIt.
Am besten postest du dein komplettes Skript in einer lesbaren Form (Zeilenumbrüche fehlen), notfalls hängst du es als Dateianhang an, falls du es mit der Formatierung nicht hinbekommst,
mfg (Auto)Bert
Hallo DaisukeHideki,
herzlich willkommen im Forum und viel Spass mit AutoIt.
Am besten fängst du mit den Tutorials aus der Hilfe arbeitest dich von da bis zur Gui-Referenz durch. Hilfreich kann auch das [ gelöst ] Buch von peethebee und das Online-Tutorial sein.
mfg (Auto)Bert
Hallo Baron1977,
entscheidend in dem Skript sind Zeilen 7:
[autoit]MouseClick("right", $pos[2] - 10, @DesktopHeight - 5)
[/autoit]
und Zeile 21
MouseClick("left", $pos[0] - 3, @DesktopHeight - 5, 2)
[/autoit]
da mit ControlGetPos zuvor die Größe und Position ermittelt wird, sind Abweichungen bei deinem System für alle angeschlossenen Monitore und Auflösungen gleich. Du kannst ja die Werte mit denen $pos[0] bzw. $pos[2] korrigiert wird anpassen eventuell musst du in Zeile 7 die Breite also @DeskTopWidth mit in der Formel verechnen.
mfg (Auto)Bert
Hallo Cartan12,
Zitat>>>>aus der Hilfe zu Send<<<<
Die "Send" Befehlssyntax ist ähnlich dem von ScriptIt und Visual Basic verwendetem "SendKeys"-Befehl. Die Zeichen werden wie geschrieben gesendet, mit Ausnahme der folgenden Zeichen:
...
'#'
Die Hash (Raute oder Doppelkreuz)-Taste simuliert das Drücken der Windows-Taste. Folglich würde Send("#r") Win+r senden und damit die Run Dialogbox (Ausführen-Dialog) aufrufen.
....
mfg (autoBert
Hallo Kev,
anscheinend nicht. Innerhalb von noch nicht einmal 6 Stunden seinen Beitrag (und das auch noch 2 X) zu pushen wird hier grundsätzlich ignoriert,
mfg (Auto)Bert
Hallo pretrojaner,
[autoit]Zeile 5
GuiSetOnEvent($GUI_EVENT_CLOSE,"_Abbrechen"
alte Zeile 6
#
mfg (Auto)Bert
Hallo Jakolo,
du kannst doch ToolTip anstelle von Tra<yTip in deinen Skripten verwenden,
mfg (Auto)Bert
Hallo schw3ndi,
wäre es nicht das einfachste einfach den Entwickler zu fragen, ob er nicht eine Exportfunktion einbauen kann. Bzw. sich mit ihm zusammen zu überlegen, wie man das Verwaltungsprogramm eures Vereines weiter verbessern könnte,
mfg >(Auto)Bert
Hallo bizzi,
ZitatAlles anzeigenRun
--------------------------------------------------------------------------------Startet ein externes Programm.
Run ( "program" [, "workingdir" [, show_flag[, opt_flag ]]] )
Parameter
program Der komplette Pfad des Programms (.EXE, .BAT, .COM oder .PIF), die ausgeführt werden soll. (siehe Bemerkungen)
workingdir [optional] Der Pfad, in dem das Programm ausgeführt werden soll (Arbeitsverzeichnis). Dies ist nicht der Pfad des Programms.
show_flag [optional] Das "show"- (Sichtbarkeits-) Flag des auszuführenden Programms:
@SW_HIDE = verstecktes Fenster (alternative Eingabe: default).
@SW_MINIMIZE = minimiertes Fenster.
@SW_MAXIMIZE = maximiertes Fenster.
also so zum Beispiel
[autoit]run("PROGRAMMinklusivPFAD","ARBEITSVERZEICHNIS")
[/autoit]wobei das Arbeitsverzeichnis bei dir das Verzeichnis ist, wo sich die INI befindet,
mfg (Auto)Bert
Hallo
Ah ja, wie BugFix gesagt hat
kann keinen Post von BugFix zu diesem Thema finden,
mfg (Auto)Bert
Hallo freaky,
im IE kannst du mit
Zitat_IEDocReadHTML
--------------------------------------------------------------------------------Gibt den kompletten HTML-Quelltext eines Dokuments zurück
arbeiten. _InetGetSource ist bei bekannter URL auch eine Möglichkeit,
mfg (Auto)Bert
Hallo bizzi,
benutze doch einfach den Parameter WORKINGDIR des run-Befehls,
mfg (Auto)Bert
Hallo Bulli,
hier mal meine Version:
#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1) ;ONEvent Mode.
[/autoit] [autoit][/autoit] [autoit]Dim $Input1, $Input2, $Input3, $Input4, $Input5, $Input6, $GUI, $Label1, $Label2, $Label3, $Label4, $Label5, $Label6
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
$GUI = GUICreate("test", 266, 382, 189, 123)
$Input1 = GUICtrlCreateInput("", 128, 40, 121, 21)
$Input2 = GUICtrlCreateInput("", 128, 88, 121, 21)
$Input3 = GUICtrlCreateInput("", 128, 136, 121, 21)
$Input4 = GUICtrlCreateInput("", 128, 184, 121, 21)
$Input5 = GUICtrlCreateInput("", 128, 232, 121, 21)
$Input6 = GUICtrlCreateInput("", 128, 280, 121, 21)
$Start = GUICtrlCreateButton("Start", 88, 336, 75, 25)
GUICtrlSetOnEvent($Start, "_Start")
$Label1 = GUICtrlCreateLabel("Input1", 24, 40, 34, 17)
$Label2 = GUICtrlCreateLabel("Input2", 24, 88, 34, 17)
$Label3 = GUICtrlCreateLabel("Input3", 24, 136, 34, 17)
$Label4 = GUICtrlCreateLabel("Input4", 24, 184, 34, 17)
$Label5 = GUICtrlCreateLabel("Input5", 24, 232, 34, 17)
$Label6 = GUICtrlCreateLabel("Input6", 24, 280, 34, 17)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
GUISetState(@SW_SHOW)
While 1
Sleep(1000)
WEnd
EndFunc ;==>_Main
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
Exit
EndFunc ;==>_Exit
Func _Start()
Local $onEvent = Opt("GUIOnEventMode", 0) ;ONEvent Mode ausschalten und in Variable Zustand speichern
;GUIDelete()
$Form1 = GUICreate("ausgabe", 267, 217, 192, 124)
$Eingaben = GUICtrlRead($Input1) & @CRLF & GUICtrlRead($Input2) & @CRLF & GUICtrlRead($Input3) & @CRLF & GUICtrlRead($Input4) & @CRLF & GUICtrlRead($Input5) & @CRLF & GUICtrlRead($Input6)
$Edit1 = GUICtrlCreateEdit($Eingaben, 24, 14, 201, 169)
$hClose = GUICtrlCreateButton("Schliessen", 24, 190, 201, 25)
;GUICtrlSetData(-1, $Eingaben)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $hClose
ExitLoop
EndSwitch
WEnd
GUIDelete($Form1)
Opt("GUIOnEventMode", $onEvent) ;ONEvent Mode wiederherstellen
EndFunc ;==>_Start
Exit
[/autoit]da du für die 1. Gui den OnEvent-Modus nehmen wolltest (siehe GuiCtrlSetOnEvent) und für die 2. den MessageLoop-Modus (siehe GuiGetMsg) musst du auch den OnEventModus dementsprechend umschalten. Die Ausgabe im Edit-Feld habe ich auch angepasst (Vorher erschien immer nur Edit1. Üblicherweise skriptet man entweder im OnEvent-Modus oder im MessageLoop-Modus. Es ist aber durhaus möglich beide in einem Skript zu verwenden, im besonderen kommt es öfters bei kleineren Tool-Windows die man universel einbinden will (und deshalb in eine UDF auslagert) praktiziert.
Das gemeinste an deinem Skript war allerdings, die Deklaration von $GUI_EVENT_CLOSE am Ende der Zeile (so dass ich es übersehen hatte),
mfg (Auto)Bert
Hallo MMM,
wenn du dir den anderen Thread genau gelesen hättest, wüsstest du dass ohne komplettes Skript eine echte Hilfe nicht möglich ist. Das einzige was sich seitdem entscheidend geändert hat, du kannst jetzt mehrere Adlib's verwenden siehe dazu die Hilfe von AdlibRegister und AdlibUnregister. IsPressed könnte auch noch nützlich sein.
Egal ob du im GuiGetMsg- oder OnEventModus skriptest, während die func läuft werden die Ereignisse zwar ausgelöst, aber erst nach Beendigung der func abgearbeitet.
mfg (Auto)Bert
Hallo JuraX,
sorry, habe leider vergessen die Zeile 83 zu löschen (ist bei mir nötig da ansonsten _GetFilesFolder_Rekursiv mit folgender Fehlermeldung austeigt, da keine INI:
C:\Programme\AutoIt3\Downloads\JuraX\_GetFilesFolder_Rekursiv.au3 (34) : ==> The requested action with this object has failed.:
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
_ShowSubFolders($oFSO.GetFolder($sPath)^ ERROR
mfg (Auto)Bert
Hallo JuarX,
versuch es einmal so:
#include <Bass.au3>
#include <GuiListView.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <BassConstants.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <_GetFilesFolder_Rekursiv.au3>
#NoTrayIcon
;===================================================================================================
; INRadio-Localtuner by JuraX
;===================================================================================================
Global Const $WM_DROPFILESplay = 0x0233
Global Const $WM_DROPFILES = 0x0233
Global $gaDropFiles[1]
Global $aItem[2]
Global $playing_state = -1
Global $MusicHandle
Global $ARRPLAY, $titelnummer = 0
Global $progress_slider, $slots, $hwnd
Global $fftstruct = DllStructCreate("float[128]")
#Region StartUp
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#Region OPT
Opt("TrayMenuMode", 1)
Opt("MouseCoordMode", 0)
#EndRegion OPT
#Region Tray
$uottray = TrayCreateItem("Anzeigen")
$totray = TrayCreateItem("Verstecken")
$deleate = TrayCreateItem("Schließen")
TraySetState()
#EndRegion Tray
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Field=INR|Jurax-Multimedia
#AutoIt3Wrapper_Res_Field=ProductVersion|1.3
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;Bass StartUp
_BASS_STARTUP(@ScriptDir & "\BASS.dll")
_BASS_Init(0, -1, 44100, 0, "")
If @error Then
MsgBox(0, "Error", "Sound konnte nicht Initialisiert werden!")
Exit
EndIf
#Region Register
AdlibRegister("Aktualisieren", 100)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
#EndRegion Register
#EndRegion StartUp
[/autoit] [autoit][/autoit] [autoit]#Region GUI
$width = 380
$height = 650
$hwnd = GUICreate("INRadio-Localtuner", $width, $height, -1, -1, Default, $WS_EX_ACCEPTFILES)
$Close = GUICtrlCreateButton("Close", 296, 160, 75, 25, 0)
$Play = GUICtrlCreateButton("Play", 216, 160, 75, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 136, 160, 75, 25, 0)
$newfile = GUICtrlCreateButton("Andere Datei", 36, 160, 75, 25, 0)
$progress_slider = GUICtrlCreateProgress(8, 32, 236, 20)
$slots = GUICtrlCreateLabel(GUICtrlRead($progress_slider), 8, 8, 150, 17)
$ordner = GUICtrlCreateButton("Neue Bibliothek", 136, 330)
GUICtrlCreateLabel("Lautstärke", 8, 190, 80, 20)
$Volume_slider = GUICtrlCreateSlider(8, 250, 366, 80)
$hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 375, 350, 200)
$Playliste = GUICtrlCreateButton("Playliste abspielen", 20, 330)
#Region BIB Füllen
$return = IniRead(@ScriptDir & "\INRadio.ini", "Load", "BIB", "")
If $return = "" Then
$return = 'C:\Users\' & @UserName & '\Desktop'
EndIf
$return = "C:\Programme\AutoIt3\MyProjects\MP3_Batchdownloader\Downloaded"
$returnputin = _GetFilesFolder_Rekursiv($return, "mp3", 0)
For $i = 1 To $returnputin[0]
$dateiname = StringSplit($returnputin[$i], "\")
GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
Next
#EndRegion BIB Füllen
$rightVol = GUICtrlCreateProgress(8, 88, 236, 17)
GUICtrlSetLimit(-1, 100, 0)
GUICtrlCreateLabel("Right Channel Volume Level", 8, 112, 150, 17)
$LeftVol = GUICtrlCreateProgress(8, 136, 236, 17)
GUICtrlSetLimit(-1, 100, 0)
GUICtrlCreateLabel("Left Channel Volume Level", 8, 64, 150, 17)
GUISetState()
#EndRegion GUI
#Region GDIstartup
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
_GDIPlus_Startup()
$iX = 120
$iY = 145
$graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $graphics)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsClear($backbuffer)
$pen1_size = 4
$pen1 = _GDIPlus_PenCreate(0, $pen1_size)
$pen2_size = 4
$pen2 = _GDIPlus_PenCreate(0, $pen2_size)
$pen3_size = 3
$pen3 = _GDIPlus_PenCreate(0, $pen3_size)
$fall_speed_l_threshold = 0
$fall_speed_r_threshold = 0
$equalizer_width = 24
$max_l = 0
$max_r = 0
$fall_speed = 5
$fire_up = 15
$fft_start = 7
$fft_end = 127
$fft_boost = 750
$dy = Int($iY / ($fft_end - $fft_start)) + $pen3_size
$dyy = Int($iY / $dy / 2)
$eq = 1
Dim $mpos[2]
#EndRegion GDIstartup
#Region Loop
[/autoit] [autoit][/autoit] [autoit]While (True)
If $playing_state = 1 Then
$song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
$current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE)
$percent = Round(($current / $song_length) * 100, 0)
ConsoleWrite("MH: " & $MusicHandle & " Current: " & $current & " song_length: " & $song_length & @CRLF)
GUICtrlSetData($progress_slider, $percent)
$levels = _BASS_ChannelGetLevel($MusicHandle)
$rightChLvl = _LoWord($levels)
$rightChLvlper = Round(($rightChLvl / 32768) * 100, 0)
$LeftChLvl = _HiWord($levels)
$leftChLvlper = Round(($LeftChLvl / 32768) * 100, 0)
If IsArray($ARRPLAY) Then
If $current = $song_length Then
GUICtrlSetData($slots, 0)
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$titelnummer += 1
If $titelnummer = UBound($ARRPLAY) - 1 Then $titelnummer = 0
; Sleep (50)
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
EndIf
EndIf
Else
$rightChLvlper = 0
$leftChLvlper = 0
EndIf
GUICtrlSetData($rightVol, $rightChLvlper)
GUICtrlSetData($LeftVol, $leftChLvlper)
Display_Vis($eq)
$Msg = GUIGetMsg()
$tmsg = TrayGetMsg()
Switch $tmsg
Case $uottray
GUISetState(@SW_SHOW)
Case $totray
GUISetState(@SW_HIDE)
Case $deleate
EXITF()
EndSwitch
Switch $Msg
Case $Close, $GUI_EVENT_CLOSE
EXITF()
Case $Play
Case $Stop
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
$playing_state = -1
EndIf
$ARRPLAY = 0
Sleep(50)
Case $newfile
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$ARRPLAY = 0
Sleep(50)
$file = FileOpenDialog("Open...", "", "MP3 Files (*.mp3)")
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
Case $Volume_slider
SoundSetWaveVolume(GUICtrlRead($Volume_slider))
Case $ordner
$var = FileSelectFolder("Ordner wählen", "")
IniWrite(@ScriptDir & "\INRadio.ini", "Load", "BIB", $var)
Case $Playliste
$ARRPLAY = _ListViewToArray($hListView)
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
EndSwitch
WEnd
#EndRegion Loop
$mpos = MouseGetPos()
If $mpos[0] >= $width - $iX - 10 And $mpos[0] <= $width - 10 And $mpos[1] > 8 And $mpos[1] <= $iY + 8 And _IsPressed("01", "user32.dll") And WinActive($hwnd) Then
$eq *= -1
EndIf
#Region Func's
Func WM_DROPFILES_FUNC($hwnd, $msgID, $wParam, $lParam);Um mehrere Dateien gleichzeitig droppen zu könen
Local $nSize, $pFileName
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
For $i = 0 To $nAmt[0]
$nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
$nSize = $nSize[0] + 1
$pFileName = DllStructCreate('wchar[' & $nSize & ']')
DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
$filename = DllStructGetData($pFileName, 1) ;Dateinamen holen
ConsoleWrite($filename & @CRLF)
ReDim $gaDropFiles[$i + 1]
$gaDropFiles[$i] = $filename
$pFileName = 0
Next
;_ArrayDisplay($gaDropFiles)
For $i = 0 To UBound($gaDropFiles) - 2 ;kommt derzeit immer noch ein leerer Eintrag am schluss
GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1') & "|" & $gaDropFiles[$i], $hListView)
Next
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE) ;erst wenn alle eigefügt sind
EndFunc ;==>WM_DROPFILES_FUNC
Func Aktualisieren()
EndFunc ;==>Aktualisieren
Func WM_NOTIFY($hwnd, $msgID, $wParam, $lParam);Für Doppelcklick Erkennung
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
If _GUICtrlListView_GetItemSelected($hListView, $i) Then
$aItem = _GUICtrlListView_GetItemTextArray($hListView, $i)
;~ In aItem[1] steht der Dateiname und in $aItem[2] der Pfad zincl. Dateinamen
_LeftDblClick()
EndIf
Next
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func _LeftDblClick()
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$titelnummer = -1
$file = $aItem[2]
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
EndFunc ;==>_LeftDblClick
Func Display_Vis($eq = 1)
_GDIPlus_GraphicsClear($backbuffer, 0x80F0F0F0)
If $eq > 0 Then
$levels = _BASS_ChannelGetLevel($MusicHandle)
$LeftChLvl = $leftChLvlper ;Round(_HiWord($levels) / $iY, 0)
$rightChLvl = $rightChLvlper ;Round(_LoWord($levels) / $iY, 0)
If $max_l <= $LeftChLvl Then ;fire up higest line
$max_l = $LeftChLvl + $fire_up
$fall_speed_l_threshold = 20
Else
If $fall_speed_l_threshold <= 0 Then ;increase fall speed of highest line faster until threshold is <= 0 (second fall part)
If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed
Else
$fall_speed_l_threshold -= 1 ;increase fall speed of highest line by slower until threshold is <= 0 (first fall part)
If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed / 3
EndIf
EndIf
If $max_r <= $rightChLvl Then
$max_r = $rightChLvl + $fire_up
$fall_speed_r_threshold = 20
Else
If $fall_speed_r_threshold <= 0 Then
If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed
Else
$fall_speed_r_threshold -= 1
If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed / 3
EndIf
EndIf
_BASS_ChannelGetData($MusicHandle, DllStructGetPtr($fftstruct), $BASS_DATA_FFT256)
For $i = $fft_start To $fft_end Step $dy
$fft = Round(DllStructGetData($fftstruct, 1, $i + 1) * $fft_boost)
$r = (-(Cos(1.7 * $fft / 256) + 1) * 0.5) * 256
$g = ((Cos(4 * $fft / 256) + 1) * 0.5) * 256
$b = 0
_GDIPlus_PenSetColor($pen3, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsDrawLine($backbuffer, $iX / 5, $i + $dyy, $iX / 5 + $fft, $i + $dyy, $pen3)
Next
EndIf
_GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, $width - $iX - 10, 8, $iX, $iY)
EndFunc ;==>Display_Vis
Func _SoundGetWaveVolume()
Local $WaveVol = -1, $p, $ret
Const $MMSYSERR_NOERROR = 0
$p = DllStructCreate("dword")
If @error Then
SetError(2)
Return -2
EndIf
$ret = DllCall("winmm.dll", "long", "waveOutGetVolume", "long", -1, "long", DllStructGetPtr($p))
If ($ret[0] == $MMSYSERR_NOERROR) Then
$WaveVol = Round(Dec(StringRight(Hex(DllStructGetData($p, 1), 8), 4)) / 0xFFFF * 100)
Else
SetError(1)
EndIf
$p = ""
Return $WaveVol
EndFunc ;==>_SoundGetWaveVolume
Func EXITF()
_BASS_Stop()
_BASS_Free()
_GDIPlus_PenDispose($pen1)
_GDIPlus_PenDispose($pen2)
_GDIPlus_PenDispose($pen3)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
$fftstruct = 0
ProcessClose("Radiotuner.exe")
AdlibUnRegister("Aktualisieren")
Exit
EndFunc ;==>EXITF
Func _ListViewToArray($hListView)
If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
Local $sString = ""
For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
$sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
$sString &= ";"
Next
$aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
$iUB1 = UBound($aSplit)
Dim $aRet[$iUB1][1]
For $i = 0 To $iUB1 - 1
$aSplit2 = StringSplit($aSplit[$i], "|", 2)
$iUB2 = UBound($aSplit2)
If $iUB2 > UBound($aRet, 2) Then ReDim $aRet[$iUB1][$iUB2]
For $j = 0 To $iUB2 - 1
$aRet[$i][$j] = $aSplit2[$j]
Next
Next
Return $aRet
EndFunc ;==>_ListViewToArray
#EndRegion Func's
Die Änderungen habe ich nur für das Playliste abspielen getestet,
mfg (Auto)Bert