Insbesondere, wo von den mittlerweile ~4300 Zeilen Code maximal 100-200 von dir kommen, wovon das meiste aus der Bass-UDF Hilfe kommt und zusammengebastelt wurde.
Um das ganze das nächste mal zu vermeiden werd ich die paar Zeilen eben selbst schreiben.
Dein Projekt hast du ja mittlerweile weiterentwickelt, und der sieht doch auch gut aus und hat auch nen haufen netter Funktionen. Ich wollte einfach nur einen Player mit (viel) mehr Möglichkeiten haben. Ob der dann komplizierter wird war mir dabei ziemlich egal. (Und langsam bin ich auch ein wenig genervt... Betrachte das doch einfach mal als erledigt. Dein Player ist in meinem schon längst nicht mehr wiedererkennbar, bzw. Vorhanden.)
Das wird mir langsam, genau wie Raupi sagte, ein wenig zu albern...
Beiträge von Kanashius
-
-
Das h steht für Handle. Ein hex ist nur eine Zahl (z.B. INT) in anderer Schreibweise. Wenn du HEX(ZAHL) nutzt wird dir die Zahl Hexadezimal argestellt.
Stell es dir als Pointer auf eine andere Adresse im Speicher vor, die auf das Fenster verweist. -
@4ern Ich schreib das Sleep auch immer hinter das while. Das kürzt den Quellcode und man vergisst es nicht. Außerdem findet man es immer schnell wieder.
-
So. Mit diesem Update ist das Projekt ist vorerst abgeschlossen. (Hab momentan keine Verbesserungsideen mehr :))
Es wurde eine Suchfunktion hinzugefügt. Dabei wird in ein Input-Feld getippt und während des Tippens werden die Ergebnisse angezeigt. (Neuanwählen des Inputfeldes löscht den inhalt)
Das ziehen/doppelklicken funktioniert bei der Suche genauso wie in der Listview (sitzt auch an der gleichen Stelle).
Um Dateien der Suche hinzuzufügen muss der Ordner, in dem sich die Dateien befinden einmal angeklickt werden. Es gibt aber auch die Möglichkeit einen Rechtsklick auf einen Ordner zu machen und diesen durch klick auf "Der Suche hinzufügen" rekursiv (mit allen Unterordnern) in die Datenbank einzufügen. (Das anzeigen der Ordner dauert nur beim ersten mal länger. Sobald der Ordner eingelesen wurde geht es fast genauso schnell wie ohne die Suche. Nur bei vielen Änderungen kann es länger dauern.) Änderungen an Dateien/Ordnern werden erst beim neueinlesen, bzw. "Der Suche hinzufügen" übernommen.Natürlich sind auch wieder ein paar Bugfixes dabei.
Falls ihr Fehler bemerkt: Bitte hier Posten!Viel Freude! (Die Suchfunktion war auch echt nötig :D)
-
Vielleicht gibt es eine bessere Lösung (warscheinlich). Aber:
Eventuell gibt _GDIPlus_BitmapGetPixel ( $hBitmap, $iX, $iY ) an, ob der Pixel transparent ist. Wenn ja einfach den Pixel an der aktuellen Mausposition abfragen. (Evtl. gibt es da auch ne andere Funktion für) -
-
Eventuell musst du im neuen Word exportieren:
[autoit]_Word_DocExport
[/autoit] -
Habs mal so gemacht :
Spoiler anzeigen
[autoit]#include <GuiRichEdit.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <RichEditConstants.au3>global $SuchWorte[2][2]=[["test",0xFF0000],["anders",0x0000FF]]
[/autoit] [autoit][/autoit] [autoit]
global $NoEvent
$hGui = GUICreate("HL", 700, 500, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "", 10, 10, 680, 400, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
GUISetState()While Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
Exit
EndSelect
WEndFunc MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $nNotifyCode = _HiWord($wParam)
Local $nID = _LoWord($wParam)
; Local $hCtrl = $lParam
;ConsoleWrite("Before:"&$nNotifyCode&@crlf)
if $NoEvent then
$NoEvent=false
Return $GUI_RUNDEFMSG
endif
;ConsoleWrite($nNotifyCode&@crlf)
Switch $lParam
Case $hRichEdit
Switch $nNotifyCode
Case 1024
ConsoleWrite("Changed"&@crlf)
$Pos=_GUICtrlRichEdit_GetSel($hRichEdit)
$text=_GUICtrlRichEdit_GetTextInRange($hRichEdit,0, $Pos[1])
for $i=0 to UBound($SuchWorte)-1 step 1
$position=1
$first=true
while $position<>0
$tmp=$position
if NOT $first then
$tmp=$position+StringLen($SuchWorte[$i][0])
endif
$position = StringInStr($text, $SuchWorte[$i][0],0,1,$tmp) ;das Suchwort suchen
if $position>0 then
_GUICtrlRichEdit_SetSel($hRichEdit, $position - 1, StringLen($SuchWorte[$i][0]) + $position - 1) ;das Wort markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $SuchWorte[$i][1]) ;die Farbe verändern
ConsoleWrite("Color: "&$position - 1&":"&StringLen($SuchWorte[$i][0]) + $position - 1&@crlf)
$first=false
endif
WEnd
next
ConsoleWrite($pos[0]&":"&$pos[1]&@crlf)
_GUICtrlRichEdit_SetSel($hRichEdit,$pos[0],$pos[1]); Markierung rückgängig
$NoEvent=true
;_GUICtrlRichEdit_SetCharColor($hRichEdit, 0x000000) ;die Farbe verändern
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_COMMANDFunc _HiWord($x)
[/autoit]
Return BitShift($x, 16)
EndFunc ;==>_HiWord
Func _LoWord($x)
Return BitAND($x, 0xFFFF)
EndFunc ;==>_LoWord
Das einzige Problem:
Beim weiterschreiben bleibt die Farbe erhalten. Mein versuch (Zeile 59) sorgt dafür, dass alles wieder schwarz wird -.-Kannst ja selbst mal probieren. Vllt fällt auch wem anders noch eine Lösung ein.
MfG Kanashius
-
Ich werd das mal schreiben. (Bzw. hab schon angefangen)
Edit: Habs fertig. fehlt nur noch die GUI, damit du das schönermachen kannst. Ich schreib dich deshalb mal an.
-
-
So. Neues Update:
Es gibt jetzt Crossfade (Mit Button fürs automatische Faden)
Es gibt eine zweite Playlist und eine Checkbox, die Automatisch die beiden Playlists im Wechsel durchlaufen lässt. (Danke Micha :D)
Im Modus mit beiden Playlists (Oben der Switch-Button) können Lieder nur noch über das obere drittel auf den jeweiligen Player gezogen werden, da im Mittleren drittel die Playlists sind. -
Ich weiß jetzt nicht genau, was du mit "lesbarem" Pdf meinst (ein unlesbares wäre irgendwie sinnlos).
Aber:
http://www.chip.de/downloads/Some…r_31735164.html
Konvertiert PDF zu text. Vielleicht funktioniert das bei dir, sodass man dann die txt einlesen kann, die infos auslesen und verarbeiten kann.
(Kommt vielleicht auch darauf an, ob deine PDF aus Bildern bestehen oder aus text). -
So. Ich hab das Update eingespielt.
Morgen werd ich mir mal Crossfader/AutoCrossfader vornehmen und mal sehen, ob ich ne zweite Playlist hinzufüge. -
Jo. Stimmt, danke... Da hab ich nicht genau genug geguckt
-
Den Resetfehler hab ich schon bemerkt und behoben. Werde heute noch ein Update hochladen. Dort werden dann auch die Sound, EQ,Device Einstellungen gespeichert, sowie die bewegenden Texte eingefügt, wenn der Titel/Interpret zu lange ist.
Was das Bild angeht: du meinst die Buttons links, oder? Da bin ich momentan Ratlos. Die werden genauso erstellt und bewegt wie die rechts, werden aber irgendwie nicht richtig dargestellt. Das tritt aber nur beim Resize auf. Wenn du das Programm neu startest dürfte das nicht mehr so sein. (Die aktuelle Größe wird ja gespeichert).
Das Problem ist die _setSize($width,$height,$maximize=false) Funktion.Spoiler anzeigen
[autoit]
[/autoit]
;links
GUICtrlSetPos($hGUITitle, 5, 5, $MainGui_Width/4-5)
GUICtrlSetPos($hGUIArtist, $MainGui_Width/4+5, 5, $MainGui_Width/4,20)
GUICtrlSetPos($hGUIPositionL, 5, 35, 150, 25)
GUICtrlSetPos($hGUIPosition, 5, 65, $MainGui_Width/2-5, 25)
GUICtrlSetPos($hGUIMode, 55, 95, 50, 22)
GUICtrlSetPos($hGUIPlayPause, 55, 120, 50, 25)
GUICtrlSetPos($hGUIBackwards, 5, 115, 50, 30)
GUICtrlSetPos($hGUIForwards, 105, 115, 50, 30)
GUICtrlSetPos($hGuiAudioOutput, 5, 150,100,20)
ControlMove($hGUI,"",$hGUIDeviceCombo,5, 170, $MainGui_Width/4)
;rechts
GUICtrlSetPos($hGUITitleR, $MainGui_Width/2+5, 5, $MainGui_Width/4-5)
GUICtrlSetPos($hGUIArtistR, $MainGui_Width/4*3+5, 5, $MainGui_Width/4,20)
GUICtrlSetPos($hGUIPositionLR, $MainGui_Width/2+5, 35, 150, 25)
GUICtrlSetPos($hGUIPositionR, $MainGui_Width/2+5, 65, $MainGui_Width/2, 25)
GUICtrlSetPos($hGUIPlayPauseR, $MainGui_Width/2+5+55, 100, 50, 25)
GUICtrlSetPos($hGuiAudioOutputR, $MainGui_Width/2+5+5, 130)
ControlMove($hGUI,"",$hGUIDeviceComboR,$MainGui_Width/2+5+5, 150, $MainGui_Width/4)Was die Mehrfachauswahl angeht bin ich auch auf ein Problem gestoßen... Ich hab sie nirgends verboten, sie ist aber nicht möglich...
[autoit]$hGUIList = GUICtrlCreateListView("Path|Filename|Title|Artist|Album|Length", 0 + 310, $border[0] + 5, 480 + 5, 400, -1, BitOR($LVS_EX_INFOTIP, $LVS_EX_FULLROWSELECT))
[/autoit] -
Das TextMeter werd ich mir genauer ansehen. Erste eEindruck sieht aber gut aus.
Das Speichern der Einstellungen werd ich auch umsetzen. (Hatte vergessen, das zu schreiben)
Das mit dem Abbrechen werd ich mir auch nochmal ansehen. (fehlt ja vermutlich nur ein +1 beim Ende der Länge oder so)
Multiselect hatte ich auch schon überlegt, werd auch mal versuchen, das umzusetzen.Was die Ordner und Dateien betrifft: Ich nutze eine von mir geschriebene UDF dafür. Als ich diese schrieb hab ich mir sogar das von Oscar angesehen. Ich fand es eher unpraktisch, Dateien und Ordner in der TreeView zu mischen. (Was meinen Player angeht orientiere ich mich auch ein bisschen an VDJ ;)) Ich habe Oft viele Dateien in einem Ordner (mehrere 100 Lieder). würde man diese alle in der Treeview auflisten wäre man dort beim Ordner wechseln fast nurnoch am Scrollen. (Daher würde ich das eher nicht umsetzen).
Das mit dem CD-Laufwerk liegt daran, dass ich beim Laden einmal nachsehe, ob Ordner unter dem Pfad sind, und wenn ja wird ein + zum aufklappen hinzugefügt. Ich denke, es lässt sich aber einbauen, dass ich das bei CDLaufwerken verhindere und dort einfach so das + hinsetze.
Danke für deine vielen Ideen, Micha_he.
-
Crossfader wollte ich eh noch einbauen. AutoCrossfader sollte auch drin sein.
Wobei das "sanfte" ein/ausblenden ja schon drin ist. Der wird ja langsam leiser/lauter. (Je nach Lautstärke dauert es unterschiedlich lang)
(Wenn das so weitergeht bau ich noch ne CommandoZeile ein, die dann auf events wartet und man spezielleres einstellen kann ;D)Was die Anzeige angeht: Ich hab nen 1920 Pixel Breiten Monitor... bei mir war noch kein Titel zu groß, weshalb mir das garnicht auffiel... Eigentlich wollte ich nur eine Zeile...
Muss mal überlegen, ob man den Titel so hin und her bewegen könnte... Das Problem ist dabei ja nur, dass die Buchstaben unterschiedlich groß sind. Ich werds mir aber demnächst mal ansehen -
So. Neues Update.
Ich hab die Bugs behoben, die @turbobaby nannte (danke dafür)
Ich hab einen Equalizer für Streams hinzugefügt
Man kann nun Lieder aus der mittleren Liste auf die Linke Seite zeihen, die werden dann der Liste hinzugefügt und das oberste wird abgespielt.
Man kann nun Lieder aus der Playlist auf die Linke Seite ziehen, die werden dann direkt abgespieltturbobaby:
Ich lasse es so, dass Lieder mehrfach hinzugefügt werden können. Ich denke, das ist eine Änderung, die eher subjektiv ist und ich habe ein Lied gerne auch mehr als 1x in meiner Playlist.
(Außerdem würde das wieder einiges an Zeit kosten beim Einfügen, jenachdem, wie viele Lieder in der Playlist sind.) -
ja, mit winlist die fenster auflisten und dann gucken, welche zu ie gehören und dann gucken, welches du haben möchtest
-
zu 1:
Jo. Das kam durch das schieben... hatte da noch Die Fensterhöhe, statt Fensterhöhe/3*2 als erlaubtes feld zum reinschieben aus der playlist.
Hab dabei auch gleich behoben, dass das Verschieben in der Listview einfluss auf das Lied nimmt, dass oben reingeschoben wird. (werde das demnächst mit ein paar anderen erweiterungen hochladen)
zu 2:
Wie meinst du das? Es gibt nur eine Playlist, welche von dem Linken Player abgespielt wird. Nur auf den rechten Player können einzelne Songs gezogen werden.
Die Listen unten sind so: links eine Ordner(/Playlist-)auswahl. In der Mitte sind die Dateien angezeigt, die sich in dem ganz links ausgewählten Ordner befinden. Dort sollen keine Lieder eingefügt werden. (Mein Programm ist schließlich kein Dateikopier Programm ;D) In die Playlist (rechte Liste) können Lieder gezogen werden.