Dank Dir für den Gedankenanstoß, habs nu hinbekommen ![]()
LG
Dank Dir für den Gedankenanstoß, habs nu hinbekommen ![]()
LG
Hallo miteinander,
also ich versuche mal mein Problem zu schildern ![]()
Ich habe ein Text-File "Tracklist.txt" ($Tracklist) in dem mehrere Zeilen Text sind... Jetzt habe ich irgendwoher Input - den "Teil-String" "achts kält raus". Nu möchte ich dass überprüft wird, ob jeder einzelne String (also praktisch jedes Wort ("achts","kält","raus")) auch zusammen in einer Zeile des Text-Files vorkommt (irgendeine Zeile sollte den "Gesamt-String" "Nachts ist kälter als draussen" enthalten... Wenn es eine Zeile geben sollte, soll hier gestoppt werden...
Vllt stell ich mich einfach nur wirklich herrlich blöde an, aber für scheint es iwie nur so zu gehen, es sei denn ich habe n paar Befehle übersehen
.... Und nun komme ich leider irgendwie garnicht mehr weiter
Code stimmt so garnich mehr und ergibt keinen Sinn, aber vllt versteht ja jemand den Sinn...
Bedanke mich schonmal vorträglich für Hilfestellungen und nu mein bisheriger Code:
[autoit]$Input = "achts kält raus"
If $Input <> "" and StringIsSpace($Input) = 0 Then
For $i = 1 to _FileCountLines($Tracklist) Step +1
Global $Random_Track_Pfad = FileReadLine(FileOpen($Tracklist, 0), $i)
$Strings = StringSplit($Input, " ")
For $j = 1 to $Strings[0] Step +1
If StringInStr($Random_Track_Pfad, $Strings[$j]) = 1 Then
Global $Korrekt = 1
Else
Global $Korrekt = 0
FileClose($Tracklist)
ExitLoop
EndIf
Next
If $Korrekt = 1 Then
FileClose($Tracklist)
;;; dann aufhören im Text-File weiter nach passenden Zeilen zu suchen
ExitLoop
EndIf
Next
EndIf
LG Andy ![]()
Nabend zusammen ![]()
Also ich stehe im Moment vor folgendem Problem: Ich habe eine Art Music-Player der über ein GUI bedient wird und normal im Fnester offen ist... Nun möchte ich aber, dass wenn ich auf dem Desktop bin, die Bedienoberfläche praktisch so hier aussehen soll... Das Fenster ansich also transparent, aber die verschiedenen Button (.png) und Labels sichtbar (Buttons sind im Moment noch nicht transparent angepasst, aber das ist ja kein Problem)...
Nur da auch eine Anzeige im Intervall aktualisiert wird, hab ich mein Script etwas verändert, um den Effekt deutlich zu machen...
Was ich da machen möchte, geht nur leider über meine Kenntnisse drüber hinaus, aber ich hoffe auf Hilfe ![]()
Der Quellcode (auch im File mit drin):
[autoit];#NoTrayIcon
[/autoit][autoit][/autoit][autoit]#include <GUIConstants.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
If WinExists("test") Then Exit
AutoItWinSetTitle("test")
Opt("GUIOnEventMode", 1)
$GUI_Handle = GUICreate("test", 208, 45, 0, 0, $WS_POPUPWINDOW)
GUICtrlSetOnEvent(GUICtrlCreatePic(@ScriptDir & "\Icons (Musik)\Back 1.bmp", 1, 2, 24, 25), "test")
GUICtrlSetOnEvent(GUICtrlCreatePic(@ScriptDir & "\Icons (Musik)\Pause 1.bmp", 28, 1, 26, 27), "test")
GUICtrlSetOnEvent(GUICtrlCreatePic(@ScriptDir & "\Icons (Musik)\Next 1.bmp", 57, 2, 24, 25), "test")
$1 = GUICtrlCreateLabel("test", 85, 1, 96, 26)
GUICtrlSetFont(-1, ![]()
$2 = GUICtrlCreateLabel("test", 85, 14, 96)
GUICtrlSetFont(-1, ![]()
GUICtrlSetOnEvent(GUICtrlCreatePic(@ScriptDir & "\Icons (Musik)\Mini 1.bmp", 184, 1, 11, 11), "Mini_Fenster")
GUICtrlSetOnEvent(GUICtrlCreatePic(@ScriptDir & "\Icons (Musik)\Exit 1.bmp", 196, 1, 11, 11), "Exit_Fenster")
GUICtrlSetOnEvent(GUICtrlCreatePic(@ScriptDir & "\Icons (Musik)\Ordner 1.bmp", 184, 14, 11, 11), "test")
;GUICtrlCreateLabel("", 195, 12, 13, 16, -1, $GUI_WS_EX_PARENTDRAG)
;GUICtrlSetCursor (-1, 0)
GUICtrlCreateCheckbox("", 3, 29, 13, 13)
GUICtrlSetData(-1, 100)
GUICtrlSetOnEvent(GUICtrlCreateSlider(16, 27, 192, 20, $TBS_NOTICKS), "test")
GUICtrlSetLimit(-1, 100, 1) ; 3. Parameter auf 1, damit noch was zu hören ist
GUICtrlSetData(-1, 96) ; 2. Parameter nicht auf 100, damit Slider nicht ganz rechts ist
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WinSetTitle($GUI_Handle, "", @SEC)
GUICtrlSetData($1, @SEC)
GUICtrlSetData($2, @SEC)
Maus_Koordinaten_Abfrage()
WEnd
Func Exit_Fenster()
Exit
EndFunc
Func Mini_Fenster()
GUISetState(@SW_MINIMIZE)
EndFunc
Func test()
MsgBox(0, "", "test")
EndFunc
Func Maus_Koordinaten_Abfrage()
$Maus = GUIGetCursorInfo($GUI_Handle)
If $Maus[0] >= 1 and $Maus[0] < 25 and $Maus[1] >= 2 and $Maus[1] < 27 Then ; Back-Button
GUICtrlSetImage(3, @ScriptDir & "\Icons (Musik)\Back 2.bmp")
Else
GUICtrlSetImage(3, @ScriptDir & "\Icons (Musik)\Back 1.bmp")
EndIf
If $Maus[0] >= 28 and $Maus[0] < 54 and $Maus[1] >= 1 and $Maus[1] < 28 Then ; Play/Pause-Button
If 1 Then ; playing
GUICtrlSetImage(4, @ScriptDir & "\Icons (Musik)\Pause 2.bmp")
Else
GUICtrlSetImage(4, @ScriptDir & "\Icons (Musik)\Play 2.bmp")
EndIf
Else
If 1 Then ; paused
GUICtrlSetImage(4, @ScriptDir & "\Icons (Musik)\Play 1.bmp")
Else
GUICtrlSetImage(4, @ScriptDir & "\Icons (Musik)\Pause 1.bmp")
EndIf
EndIf
If $Maus[0] >= 57 and $Maus[0] < 81 and $Maus[1] >= 2 and $Maus[1] < 27 Then ; Next-Button
GUICtrlSetImage(5, @ScriptDir & "\Icons (Musik)\Next 2.bmp")
Else
GUICtrlSetImage(5, @ScriptDir & "\Icons (Musik)\Next 1.bmp")
EndIf
If $Maus[0] >= 184 and $Maus[0] < 195 and $Maus[1] >= 1 and $Maus[1] < 12 Then ; Mini-Button
GUICtrlSetImage(8, @ScriptDir & "\Icons (Musik)\Mini 2.bmp")
Else
GUICtrlSetImage(8, @ScriptDir & "\Icons (Musik)\Mini 1.bmp")
EndIf
If $Maus[0] >= 196 and $Maus[0] < 207 and $Maus[1] >= 1 and $Maus[1] < 12 Then ; Exit-Button
GUICtrlSetImage(9, @ScriptDir & "\Icons (Musik)\Exit 2.bmp")
Else
GUICtrlSetImage(9, @ScriptDir & "\Icons (Musik)\Exit 1.bmp")
EndIf
If $Maus[0] >= 184 and $Maus[0] < 195 and $Maus[1] >= 14 and $Maus[1] < 25 Then ; Ordner-Button
GUICtrlSetImage(10, @ScriptDir & "\Icons (Musik)\Ordner 2.bmp")
Else
GUICtrlSetImage(10, @ScriptDir & "\Icons (Musik)\Ordner 1.bmp")
EndIf
EndFunc
PS: Mit GDI/GDI+ kenn ich mich wirklich gar nicht aus und würde mich da auch ungern hineinarbeiten (hatte es mal veruscht, aber kam net weiter)...
Schau Dir das hier mal an... Hatte das gleiche Problem auch...
MfG AndyTR ![]()
Edit: Wegen Slider (hoffe das hilft etwas):
[autoit]$slider = GUICtrlSetOnEvent(GUICtrlCreateSlider(x, x, x, x, $TBS_NOTICKS), "Volume_Aendern")
GUICtrlSetLimit(-1, 100, 0)
GUICtrlSetData(-1, 50)
Func Volume_Aendern()
_BASS_ChannelSetVolume($Random_Track, GUICtrlRead($slider) / 100)
EndFunc
Hey...
Vllt hilft Dir das hier ... Hatte vor einigen Tagen dasselbe Problem, wie Du jetzt ![]()
Gruß AndyTR...
Oh das is nett von Dir progandy... Damit werde ich keine Schwierigkeiten mehr haben den Code dementsprechend umzuwandeln
Also denke ich...
Dann will ich mich mal dranmachen, aber dürfte eig net mehr schwierig sein durch Deine klasse Auslistung... ![]()
Dankeschön für die Hilfe
MfG AndyTR ![]()
Ja das mit der .dll is jetzt auch wunderbar nur ich wusste net genau was machen, da ich noch nie mit .dll's was gemacht hatte... ![]()
So jetzt hab ich mittlerweile auch schon nen Slider um die Lautstärke zu verändern und das klappt auch wunderbar...
Und jetzt gehts nur noch ans Anpassen. Leider weiß ich nur nicht mit den Funktionen umzugehen, brauch aber halt Funktionen, die ähnlich der _Sound-Funktionen arbeiten... Wär nett, wenn Du mir das vllt noch auflisten könntest und mit welchen Parametern ich die Funktion füttern muss, progandy... oder natürlich auf wer, anders, falls da noch jemand so Ahnung hat ![]()
- _SoundOpen($Path) --> _BASS_StreamCreateFile(0, $Path, 0, 0, 0)
- _SoundPlay($Handle) --> _BASS_ChannelPlay($Path, 0)
- _SoundClose($Handle) --> ?
- _SoundPos($Handle, 1) --> ? (soll in hh:mm:ss ausgegeben werden)
- _SoundLength($Handle, 1) --> ? (soll in hh:mm:ss ausgegeben werden)
- _SoundStatus($Handle) --> ? (wie sind die Statusbezeichnungen?)
- _SoundPause($Handle) --> ?
- _SoundResume($Handle) --> ?
Hoffe auf Hilfe ![]()
der AndyTR ![]()
Edit:
Ich Dummerchen
Hatte Zahlen von 0 bis 100 benutzt und mir fällt grade auf, dass der Wert ja zwischen 0 und 1 betragen muss... hatte das vorher noch von nem anderen Lösungansatz im Kopf
Alos das funktioniert auch schonmal super...
Nun is da jetzt aber noch das "Problem" mit dem Pfad zur Bass.dll... Und dann is das alles schön... Muss nur noch leider alles von _Sound... auf _Bass_... umschreiben; hoffe mal, dass das ganz gut klappt :o
Aber schonmal vielen Dank für Deine Hilfe progandy
Wie schnell das ging und super Lösungsansatz von Dir...
Andy...
Ich hab mal sowas hier gemacht... UNd funzt auch eig ganz gut ![]()
$Color = 0x0000FF
$Handle = "$WS_EX_TOPMOST"
$x1 = 639
$y1 = 399
$x2 = 640
$y2 = 399
$x3 = 641
$y3 = 399
$x4 = 639
$y4 = 400
$x5 = 640
$y5 = 400
$x6 = 641
$y6 = 400
$x7 = 639
$y7 = 401
$x8 = 640
$y8 = 401
$x9 = 641
$y9 = 401
While 1
$GetDC = DllCall ("user32.dll", "int", "GetDC", "hwnd", $Handle)
$SetPixel1 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x1, "long", $y1, "long", $Color)
$SetPixel2 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x2, "long", $y2, "long", $Color)
$SetPixel3 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x3, "long", $y3, "long", $Color)
$SetPixel4 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x4, "long", $y4, "long", $Color)
$SetPixel5 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x5, "long", $y5, "long", $Color)
$SetPixel6 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x6, "long", $y6, "long", $Color)
$SetPixel7 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x7, "long", $y7, "long", $Color)
$SetPixel8 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x8, "long", $y8, "long", $Color)
$SetPixel9 = DllCall ("gdi32.dll", "long", "SetPixel", "long", $GetDC[0], "long", $x9, "long", $y9, "long", $Color)
$ReleaseDC = DllCall ("user32.dll", "int", "ReleaseDC", "hwnd", 0, "int", $GetDC[0])
WEnd
Gruß AndyTR ![]()
AndyTR: dafür sollte ein neuer Thread her
Das stimmt natürlich, hatte ich leider gar nicht dran gedacht... Is ja schließlich Oscar sein Thread ![]()
Also bisher hab ich die beiden Funktionen "_BASS_ChannelSetVolume($hChannel, $nVol)" und "_BASS_ChannelGetVolume($hChannel)" in die Bass.au3 eingefügt, die nun im AutoIT Includes-Ordner liegt (zusammen mit der BassConstants.au3 und der bass.dll)
Und wenn ich das richtig verstanden habe, sollte der Code dann bisher so aussehen und abspielen hab ich auch schonmal hinbekommen:
[autoit]#include <Bass.au3>
_BASS_Startup(@ScriptDir & '\bass\BASS.dll')
_BASS_Init(0, -1, 44100, 0)
$hPlayHandle = _BASS_StreamCreateFile(0, "C:[...].mp3", 0, 0, 0)
_BASS_ChannelPlay($hPlayHandle, 0)
Ich habe probiert "_BASS_Startup..." wegzulassen, funktioniert dann aber nicht... Wie erreiche ich, dass die Bass.dll net mehr im Script-Verzeichnis liegen muss?
Dann hab ich auch schon das hier probiert, aber leider keine Veränderung in der Lautstärke bis darauf, wenn der Wert "0" ist, dass das Lied stumm/aus ist und mit nem neuen "SetVolume" auch net mehr hörbar wird:
[autoit]_BASS_ChannelSetVolume($hPlayHandle, X)
[/autoit]Danke für den neuen Thread ![]()
Beste Grüße... Andy ![]()
Habs jetzt geschafft die BASS-Dateien einzufügen:
[autoit]#include 'bass\Bass.au3'
#include 'bass\BassEnc.au3'
$bass_dll = DllOpen(@ScriptDir & '\bass\BASS.dll')
$basscb_dll = DllOpen(@ScriptDir & '\bass\BASSCB.dll')
$bassenc_dll = DllOpen(@ScriptDir & '\bass\BASSENC.dll')
Und hiermit sollte ich normalerweise die Lautstärke setzen können:
_BASS_SetVolume($bass_dll, X)
[/autoit]
Doch wenn ich das hier abfrage, bekomme ich vor und nach dem Setzen der Lautstärke "0" raus:
$volume = _BASS_GetVolume($bass_dll)
MsgBox(0, "", $volume)
Wie könnte ich es nun schaffe die Lautstärke für ein Lied zu setzen, dass ich hiermit aufgerufen habe:
#include <Sound.au3>
$track = _SoundOpen(X)
_SoundPlay($track)
Aber immerhin schonmal ein Fortschritt
Hoffe auf weitere nützliche Tipps...
Andy...
Edit: Nochmal die Liste der Bass-Funktionen:
_BASS_SetConfig
_BASS_GetConfig
_BASS_SetConfigPtr
_BASS_GetConfigPtr
_BASS_GetVersion
_BASS_ErrorGetCode
_BASS_GetDeviceInfo
_BASS_Init
_BASS_SetDevice
_BASS_GetDevice
_BASS_Free
_BASS_GetDSoundObject
_BASS_GetInfo
_BASS_Update
_BASS_GetCPU
_BASS_Start
_BASS_Stop
_BASS_Pause
_BASS_SetVolume
_BASS_GetVolume
_BASS_PluginLoad
_BASS_PluginFree
_Bass_PluginGetInfo_Sample
_BASS_Set3DFactors
_BASS_Get3DFactors
_BASS_Set3DPosition
_BASS_Get3DPosition
_BASS_Apply3D
_BASS_SetEAXParameters
_BASS_GetEAXParameters
_BASS_MusicLoad
_BASS_MusicFree
_BASS_SampleLoad
_BASS_SampleCreate
_BASS_SampleFree
_BASS_SampleSetData
_BASS_SampleGetData
_BASS_SampleGetInfo
_BASS_SampleSetInfo
_BASS_SampleGetChannel
_BASS_SampleStop
_BASS_Startup
_BASS_StreamCreate
_BASS_StreamCreateFile
_BASS_StreamCreateURL
_BASS_StreamFree
_BASS_StreamGetFilePosition
_BASS_StreamPutData
_BASS_StreamPutFileData
_BASS_RecordGetDeviceInfo
_BASS_RecordInit
_BASS_RecordSetDevice
_BASS_RecordGetDevice
_BASS_RecordFree
_BASS_RecordGetInfo
_BASS_RecordGetInputName
_BASS_RecordSetInput
_BASS_RecordGetInput
_BASS_RecordStart
_BASS_ChannelBytes2Seconds
_BASS_ChannelSeconds2Bytes
_BASS_ChannelGetDevice
_BASS_ChannelSetDevice
_BASS_ChannelIsActive
_BASS_ChannelGetInfo
_BASS_ChannelGetTags
_BASS_ChannelFlags
_BASS_ChannelUpdate
_BASS_ChannelLock
_BASS_ChannelPlay
_BASS_ChannelStop
_BASS_ChannelPause
_BASS_ChannelSetAttribute
_BASS_ChannelGetAttribute
_BASS_ChannelSlideAttribute
_BASS_ChannelIsSliding
_BASS_ChannelGet3DAttributes
_BASS_ChannelSet3DAttributes
_BASS_ChannelSet3DPosition
_BASS_ChannelGet3DPosition
_BASS_ChannelGetLength
_BASS_ChannelSetPosition
_BASS_ChannelGetPosition
_BASS_ChannelGetLevel
_BASS_ChannelGetData
_BASS_ChannelSetLink
_BASS_ChannelRemoveLink
_BASS_ChannelSetFX
_BASS_ChannelRemoveFX
_BASS_SetEAXPreset
_BASS_ChannelSetFX
_BASS_ChannelRemoveFX
_BASS_FXGetParameters
_BASS_FXSetParameters
Mit den AutoIt-Funktionen nicht. Du kannst aber die BASS.dll verwenden, die eine eigene Lautstärkesteuerung besitzt. (wenn das engl. Forum wieder da ist, kannst du danach suchen
)
Ich hatte mir die BASS-Dateien auch shconmal geladen, bekam sie aber leider nicht eingebaut... Benötige diese Funktion für meinen kleinen Player...
Im englischen AutoIT-Forum wird die Funktion ja schon erklärt und hier gibts sie zum lasen.
Nur leider sind meine Englisch-Kenntnisse zum einen nicht so sehr gut und ich steig da leider nicht durch, da ich soetwas noch nie eingebaut habe ![]()
lG Andy ![]()
Huhu,
hey ich hab mir hier immer schonmal öfters durch Gucken Hilfebeispiele geholt und nun hab ich mich mal endlich angemeldet in der Hoffnung, dass mir vllt jemand bei meiner Frage helfen kann...
Und zwar geht es um die Lautstärken-Regelung:
Die is beim Starplayer ja mit SoundSetWaveVolume gelöst, nur das Problem ist, dass so auch alle andern Töne von Windows mit verringert/erhöht werden...
Gibt es eine Möglichkeit die Lautstärke von Lieder in der Art zu verändern, wie iTunes oder der WMP das macht, also nur mit Veränderung der Lieder aber ohne Auswirkung auf Beispielsweise VLC, Teamspeak oder dergleichen?
Wäre wirklich toll, wenn da jemand eventuell eine Möglichkeit hätte... ![]()
Mit besten Grüßen... der Andy ![]()