 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: So Jan 13, 2008 9:52 pm Titel: AHK PMR (MRP) Player v2 |
|
|
Moin,
Ripp3r]D3[ hat hier ein Skript eingestellt, das ich selbst einmal ausprobiert habe und interessant fand.
Leider hat er den Thread dann mit der Bemerkung | Zitat: | | Hm Bobo wer diese Option haben will der kann sich ja die arbeit machen ich habe das project soweit erledigt ^^ | geschlossen.
Ich denke, ohne es überprüft zu haben, dass es dafür im Mutterforum bereits viele Skripte gibt. Doch ich habe es als Herausforderung für mich verstanden, das Ding noch "geschmeidiger" zu machen und es hier einzustellen, damit es hier auch "Support" dafür gibt.
Edit: Wie BoBo" schon sagte: "Bilder sagen mehr als Worte".
Also, hier ist der AHK PMR (MRP) Player v2.1:
| Code: | #NoEnv
#SingleInstance, Force
SetBatchLines, -1
; ------------------------------------------------------------------------------
;
; Version: 2.1
; Sprache: Deutsch
; OS-Version: Win9x/NT/Win Xp/Win 2003 Server
; denick : v 2 nur unter Win XP getestet
; Autor(en): Ripp3r]D3[ <Info@dcj-clan.de>
; denick
;
; Funktion: Multimediaplayer mit minimalem Ressoucenverbrauch
;
; ------------------------------------------------------------------------------
; INI-Variablen
; -------------------- ----------------------------------------------------------
; Mit letzter Auswahl Starten (false/true)
StartWithPrevSel := 1
; Startverzeichnis für das Hinzufügen von Dateien und Ordnern
StartFolder := ""
; Lautstärke beim Programmstart
StartVolume := 50
; Beim Hinzufügen von Ordnern ggf. nach der Übernahme von Unterordnern fragen
AskForSubfolders := 0
; ------------------------------------------------------------------------------
; Variablen und Konstanten
; ------------------------------------------------------------------------------
ScriptVersion := "2.1"
ScriptName := "AHK's PMR-Player v" . ScriptVersion . " "
. Chr(169) . " Ripp3r]D3[ & denick"
EndKeys := "{LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}"
. "{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}"
. "{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}"
. "{Capslock}{Numlock}{PrintScreen}{Pause}"
XM := 20
YM := 10
CW := 100
CH := 30
GW := 0
GH := 0
LW := (CW * 3) + (XM * 2)
LH := (CH * 6) + (YM * 5) + 30
GBH := LH + 5
IniFile := A_ScriptDir . "\MRPlayer.ini"
ListDir := A_ScriptDir . "\Playlisten"
PrevList := ListDir . "\Letzte_Auswahl.lst"
OldTime := ""
ActTime := ""
Title := "AHK's PMR-Player " . Chr(169) . " Ripp3r]D3[ & denick"
Files := ""
Folder := ""
PanicStop := False
Playing := False
PlayMode := ""
Recurse := False
Index := 0
; ------------------------------------------------------------------------------
; INI lesen
; ------------------------------------------------------------------------------
If FileExist(IniFile) {
INI_Read()
}
; ------------------------------------------------------------------------------
; Gui
; ------------------------------------------------------------------------------
Menu, FileMenu, Add, &Dateien hinzufügen, OpenFile
Menu, FileMenu, Add, &Ordner hinzufügen, OpenFolder
Menu, FileMenu, Add
Menu, FileMenu, Add, &Benden, GuiClose
Menu, ListMenu, Add, Letzte Aus&wahl, PrevList
Menu, ListMenu, Add, Playlist &laden, LoadList
Menu, ListMenu, Add, Playlist &speichen, SaveList
Menu, ListMenu, Add
Menu, ListMenu, Add, &Anzeige leeren, ClearList
Menu, SetMenu, Add, &Vorgaben, Settings
Menu, HelpMenu, Add, Über MRP, About
Menu, HelpMenu, Add, Tastatur- und Mausbedienung, Hotkeys
Menu, MenuBar, Add, &Datei, :FileMenu
Menu, MenuBar, Add, &Playlist, :ListMenu
Menu, MenuBar, Add, &Einstellungen, :SetMenu
Menu, MenuBar, Add, &Hilfe, :HelpMenu
Gui, +Resize -MaxiMizeBox + MinSize +MaxSize +MaxSize%A_ScreenWidth%x
Gui, Margin, % XM, % YM
Gui, Menu, MenuBar
Gui, Add, ListView, % "w" . LW . " h" . LH . " Section -Hdr +Grid "
. "Checked ReadOnly NoSort vLVLIST gPlayList"
, Kein Eintrag
Gui, Add, Groupbox, ys-5 w120 h%GBH% vGBPLAY Section, Abspielen
Gui, Add, Button, xs+10 ys+20 w%CW% h%CH% Section vBTALL gPlayAll, &Alle
Gui, Add, Button, wp hp vBTRANDOM gPlayRandom, &Zufällig
Gui, Add, Button, wp hp vBTCHECKED gPlayChecked, Aus&wahl
Gui, Add, CheckBox, wp hp vCBREPEAT, Endlos
Gui, Add, Button, wp hp vBTNEXT gStop, &Nächster Titel
Gui, Add, Button, wp hp vBTSTOP gStop, &Beenden
Gui, Add, CheckBox, xm Section hp vCBPANIC gCBPANIC, Panikstopp
Gui, Add, Text, ys hp vTXVOL Right 0x200, Lautstärke:
GuiControlGet, P, Pos, TXVOL
Gui, Add, Slider, % "x+0 ys hp w" . (LW - PX - PW + XM)
. " AltSubmit vSLVOL gVolume"
, %StartVolume%
GuiControlGet, P, Pos, BTSTOP
Gui, Add, Button, ys x%PX% w%CW% hp vBTEXIT gGuiClose, &Ende
Gui, Add, StatusBar
SB_SetParts(50)
Gui, Show, , % ScriptName
If (!FileExist(PrevList)) {
Menu, ListMenu, Disable, Letzte Aus&wahl
} Else {
If (StartWithPrevSel) {
GoSub, PrevList
}
}
GoSub, Refresh_Time
GoSub, Volume
Suspend, On
SetTimer, Refresh_Time, 1000
OnExit, Exit_App
Return
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Hotkeys
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ------------------------------------------------------------------------------
; Hotkeys für Tastaturbedienung
; ------------------------------------------------------------------------------
; Lautstärke erhöhen / verringern
^#WheelUp::
^#WheelDown::
^#NumpadAdd::
^#NumpadSub::
GuiControl, ,SLVOL
, % ((A_ThisHotkey = "^#NumpadAdd"
Or A_ThisHotkey = "^#WheelUp") ? "+2" : "+-2")
GoSub, Volume
Return
; ------------------------------------------------------------------------------
; Nächsten Titel abspielen oder Abspielen beenden
^#LButton::
^#RButton::
^#NumpadEnter::
^#NumpadDot::
^#NumpadDel::
Gosub, Stop
If (A_ThisHotkey = "^#NumpadDot"
Or A_ThisHotkey = "^#NumpadDel"
Or A_ThisHotkey = "^#RButton") {
PanicStop := True
}
Return
; ------------------------------------------------------------------------------
; Mute: Lautstärke auf 0 setzen / wiederherstellen
^#Numpad0::
^#NumpadIns::
Soundset, +1, , Mute
Return
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Gui-Subroutinen
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ------------------------------------------------------------------------------
; Subroutine für Anwendungsende
; ------------------------------------------------------------------------------
GuiClose:
ExitApp
; ------------------------------------------------------------------------------
; Subroutine für Ereignis "GuiSize"
; Die Größe kann sich nur in der Breite ändern
; ------------------------------------------------------------------------------
GuiSize:
If (GW = 0 And GH = 0) {
GW := A_GuiWidth
GH := A_GuiHeight
Return
}
If (A_EventInfo = 1 Or A_GuiWidth = GW) {
Return
}
DW := A_GuiWidth - GW
GW := A_GuiWidth
GuiControlGet, P, Pos, GBPLAY
GuiControl, MoveDraw, GBPLAY, % "x" . (PX + DW)
GuiControlGet, P, Pos, BTALL
GuiControl, Move, BTALL, % "x" . (PX + DW)
GuiControlGet, P, Pos, BTRANDOM
GuiControl, Move, BTRANDOM, % "x" . (PX + DW)
GuiControlGet, P, Pos, BTCHECKED
GuiControl, Move, BTCHECKED, % "x" . (PX + DW)
GuiControlGet, P, Pos, CBREPEAT
GuiControl, Move, CBREPEAT, % "x" . (PX + DW)
GuiControlGet, P, Pos, BTNEXT
GuiControl, Move, BTNEXT, % "x" . (PX + DW)
GuiControlGet, P, Pos, BTSTOP
GuiControl, Move, BTSTOP, % "x" . (PX + DW)
GuiControlGet, P, Pos, BTEXIT
GuiControl, Move, BTEXIT, % "x" . (PX + DW)
GuiControlGet, P, Pos, LVLIST
GuiControl, Move, LVLIST, % "w" . (PW + DW)
GuiControlGet, L, Pos, LVLIST
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Dateien hinzufügen"
; ------------------------------------------------------------------------------
OpenFile:
Gui, +OwnDialogs
FileSelectFile, Files, M, %StartFolder%, % "Bitte Datei(en) auswählen:"
If (!ErrorLevel) {
Loop, Parse, Files, `n
{
If (A_Index = 1) {
Folder := A_LoopField
} Else {
LV_Add("", Folder . "\" . A_LoopField)
}
}
LV_ModifyCol(1, "Auto")
}
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Ordner hinzufügen"
; ------------------------------------------------------------------------------
OpenFolder:
Gui, +OwnDialogs
Recurse := False
FileSelectFolder, Folder, %StartFolder%, 0, % "Bitte Ordner auswählen:"
If (!ErrorLevel) {
If (AskForSubfolders) {
Index := 0
Loop, %Folder%\*.*, 2, 1
{
Index := A_Index
}
If (Index) {
MsgBox, 36
, %Folder%
, % "Der ausgewählte Ordner enthält " . Index . " Unterordner,"
. "`n`nsollen Dateien aus diesen auch hinzugefügt werden?"
IfMsgBox, Yes
{
Recurse := True
}
}
}
Loop, %Folder%\*.*, , %Recurse%
{
LV_Add("", A_LoopFileFullPath)
}
LV_ModifyCol(1, "Auto")
}
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Letzte Auswahl"
; ------------------------------------------------------------------------------
PrevList:
Loop, Read, % PrevList
{
If (A_LoopReadLine) {
LV_Add("", A_LoopReadLine)
}
}
LV_ModifyCol(1, "Auto")
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Playlist laden"
; ------------------------------------------------------------------------------
LoadList:
FileSelectFile, Files
, M
, % ListDir
, % "Bitte Playliste(n) auswählen:"
, Playlisten (*.lst)
If (!ErrorLevel) {
Loop, Parse, Files, `n
{
If (A_Index = 1) {
Folder := A_LoopField
} Else {
Loop, Read, % Folder . "\" . A_LoopField
{
If FileExist(A_LoopReadLine) {
LV_Add("", A_LoopReadLine)
}
}
}
LV_ModifyCol(1, "Auto")
}
}
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Playlist speichern"
; ------------------------------------------------------------------------------
SaveList:
If LV_GetCount() {
If !FileExist(ListDir) {
FileCreateDir, % ListDir
}
FileSelectFile, Files
, S24
, % ListDir
, % "Playliste speichern:"
, Playlisten (*.lst)
If (!ErrorLevel) {
If FileExist(Files) {
FileDelete, % Files
}
Loop, % LV_GetCount()
{
LV_GetText(PlayFile, A_Index)
FileAppend, % PlayFile . "`r`n", % Files
}
}
}
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Anzeige leeren"
; ------------------------------------------------------------------------------
ClearList:
LV_Delete()
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Vorgaben"
; ------------------------------------------------------------------------------
Settings:
User_Defaults()
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Über AHK's PMR"
; ------------------------------------------------------------------------------
About:
Gui, +OwnDialogs
MsgBox, 64
, Über AHK's PMR
, % "Player mit Minimalen Ressourcenverbrauch`n`n"
. "Coded by Ripp3r]d3[ & denick"
Return
; ------------------------------------------------------------------------------
; Subroutine für Menüeintrag "Tastatur- und Mausbedienung"
; ------------------------------------------------------------------------------
Hotkeys:
Gui, +OwnDialogs
Help_Hotkeys()
Return
; ------------------------------------------------------------------------------
; Subroutine für Mausereignisse des ListViews.
; Doppellinksklick: Der Titel wird abgespielt
; Doppelrechtsklick: Der/die Titel werden nach Sicherheitsabfrage entfernt
; ------------------------------------------------------------------------------
PlayList:
If (Playing) {
Return
}
; Doppellinksklick
If (A_GuiEvent = "DoubleClick") {
PlayPos := A_EventInfo
LV_GetText(PlayFile, A_EventInfo)
If (PlayFile <> "Kein Eintrag") {
PlayMode := "Single"
Disable_Controls("+")
Loop
{
If (!Play(PlayFile, PlayPos)) Or (PanicStop){
GuiControl, , CBREPEAT, 0
Break
}
GuiControlGet, CBREPEAT
If (!CBREPEAT) {
Break
}
}
Disable_Controls("-")
PlayMode := ""
}
}
; Doppelrechtsklick : Listeneinträge entfernen
If (A_GuiEvent = "R") {
LV_GetText(PlayFile, A_EventInfo)
If (PlayFile <> "Kein Eintrag") {
LV_GetCount("Selected")
MsgBox, 36
, Einträge entfernen?
, % "Sollen die ausgewählten "
. LV_GetCount("Selected")
. " Titel`nwirklich entfernt werden?"
IfMsgBox, Yes
{
PlayPos := 0
Loop
{
PlayPos := LV_GetNext(PlayPos)
If (!PlayPos) {
Break
}
LV_Delete(PlayPos)
PlayPos--
}
}
}
}
PanicStop := False
Return
; ------------------------------------------------------------------------------
; Subroutine für Button "Alle"
; Alle Titel der Liste werden abgespielt
; ------------------------------------------------------------------------------
PlayAll:
If !LV_GetCount() {
Return
}
Disable_Controls("+")
PlayMode := ""
Loop
{
PlayPos := 0
Loop
{
PlayPos++
If (PlayPos > LV_GetCount()) {
Break
}
LV_GetText(PlayFile, PlayPos)
If (!Play(PlayFile, PlayPos)) Or (PanicStop) {
GuiControl, , CBREPEAT, 0
Break
}
}
GuiControlGet, CBREPEAT
If (!CBREPEAT) {
Break
}
}
Disable_Controls("-")
PanicStop := False
Return
; ------------------------------------------------------------------------------
; Subroutine für Button "Zufällig"
; Die Titel der Liste werden in zufälliger Reihenfolge abgespielt
; ------------------------------------------------------------------------------
PlayRandom:
If (!LV_GetCount()) {
Return
}
Disable_Controls("+")
Loop
{
PlayPos := 0
PlayList := ""
Loop, % LV_GetCount()
{
LV_GetText(PlayFile, A_Index)
PlayList .= PlayFile . "|" . A_Index . "`n"
}
Sort, PlayList, Random
PlayMode := "Random"
Loop, Parse, PlayList, `n
{
If RegExMatch(A_LoopField, "(?P<File>[^\|]+)\|(?P<Pos>\d+)", Play) {
If (!Play(PlayFile, PlayPos)) Or (PanicStop) {
GuiControl, , CBREPEAT, 0
Break
}
}
}
GuiControlGet, CBREPEAT
If (!CBREPEAT) {
Break
}
}
Disable_Controls("-")
PlayList := ""
PlayMode := ""
PanicStop := False
Return
; ------------------------------------------------------------------------------
; Subroutine für den Button "Auswahl"
; Nur angehakte Titel werden gespielt
; ------------------------------------------------------------------------------
PlayChecked:
If (!LV_GetNext(0, "Checked")) {
Return
}
Disable_Controls("+")
PlayMode := ""
Loop
{
PlayPos := 0
Loop
{
PlayPos := LV_GetNext(PlayPos, "Checked")
If (!PlayPos) {
Break
}
LV_GetText(PlayFile, PlayPos)
If (!Play(PlayFile, PlayPos)) Or (PanicStop) {
GuiControl, , CBREPEAT, 0
Break
}
}
GuiControlGet, CBREPEAT
If (!CBREPEAT) {
Break
}
}
Disable_Controls("-")
PanicStop := False
Return
; ------------------------------------------------------------------------------
; Gemeinsame Subroutine für die Buttons "Nächster Titel" und "Stop"
; Der laufende Titel wird abgebrochen und ggf. der nächste abgespielt
; ------------------------------------------------------------------------------
Stop:
SoundPlay, Stop, 1
If (A_GuiControl = "BTSTOP") {
PanicStop := True
}
Return
; ------------------------------------------------------------------------------
; Subroutine für den Lautstärkeregler
; ------------------------------------------------------------------------------
Volume:
GuiControlGet, SLVOL
SoundSet, % SLVOL
Return
; ------------------------------------------------------------------------------
; Subroutine für die Panik-Checkbox
; ------------------------------------------------------------------------------
CBPANIC:
GuiControlGet, CBPANIC
PanicStop := False
SetTimer, Check_Panic, % (CBPANIC ? "On" : "Off")
Return
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; OnExit-Routine
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ------------------------------------------------------------------------------
; Subroutine für OnExit
; Letzte Auswahl Speichern
; INI-Datei speichern
; ------------------------------------------------------------------------------
Exit_App:
If LV_GetCount() {
If (FileExist(PrevList)) {
FileDelete, % PrevList
}
Loop, % LV_GetCount()
{
LV_GetText(PlayFile, A_Index)
FileAppend, % PlayFile . "`n", % PrevList
}
}
INI_Write()
ExitApp
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Timerroutinen
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ------------------------------------------------------------------------------
; Aktualisierung der Zeitanzeige in der Statusbar
; ------------------------------------------------------------------------------
Refresh_Time:
FormatTime, ActTime, , HH:mm
If (OldTime = ActTime) {
Return
}
SB_SetText(ActTime, 1)
OldTime := ActTime
Return
; ------------------------------------------------------------------------------
; Prüft, ob während des Abspielens eine Taste gedrückt wurde
; und sorgt ggf. für sofortigen Abbruch
; ------------------------------------------------------------------------------
Check_Panic:
If (!Playing) {
Return
}
Input, SingleKey, L1 I T0.3, %EndKeys%
If (ErrorLevel <> "Timeout") {
PanicStop := True
GoSub, Stop
}
Return
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Funktionen
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ------------------------------------------------------------------------------
; Abspielfunktion
; ------------------------------------------------------------------------------
Play(File, ByRef Pos)
{
Global
Local Error
FileGetSize, Size, % File, K
SplitPath, File, Name
SB_SetText(Name . " - " . Size . " KB", 2)
LV_Modify(PlayPos, "Vis")
Playing := True
Suspend, Off
SoundPlay, % File, 1
Error := ErrorLevel
Suspend, On
Playing := False
SB_SetText("", 2)
LV_Modify(PlayPos, "-Check")
If (Error) {
LV_Delete(Pos)
Pos--
If (PlayMode = "Single" Or PlayMode = "Random") {
MsgBox, 16
, Fehler
, % File
. "`nist keine abspielbare Datei oder der passende Codec fehlt!"
Return False
}
MsgBox, 20
, Fehler
, % File
. "`nist keine abspielbare Datei oder der passende Codec fehlt!"
. "`n`nSoll das Abspielen mit der nächsten Datei fortgesetzt werden?"
IfMsgBox, No
{
Return False
}
}
Return True
}
; ------------------------------------------------------------------------------
; Während des Abspielens werden die Controls deaktiviert,
; die für Verwirrung sorgen könnten
; ------------------------------------------------------------------------------
Disable_Controls(Mode)
{
Global
Local Option
Option := (Mode = "+" ? "Disable" : "Enable")
Menu, MenuBar, % Option, &Datei
Menu, MenuBar, % Option, &Playlist
Menu, MenuBar, % Option, &Einstellungen
GuiControl, % Option, BTALL
GuiControl % Option, BTRANDOM
GuiControl, % Option, BTCHECKED
GuiControl, % Option, CBREPEAT
If (PlayMode := "Single") {
GuiControl, % Option, BTNEXT
}
GuiControl, % Option, LVLIST
}
; ------------------------------------------------------------------------------
; INI-Datei einlesen
; ------------------------------------------------------------------------------
INI_Read()
{
Global IniFile
Global StartWithPrevSel
Global StartFolder
Global StartVolume
Global AskForSubfolders
IniRead, Value, %IniFile%, Settings, StartWithPrevSel, ERROR
If Value In 0,1
{
StartWithPrevSel := Value
}
IniRead, Value, %IniFile%, Settings, StartFolder, ERROR
If InStr(FileExist(Value), "D")
{
StartFolder := Value
}
IniRead, Value, %IniFile%, Settings, AskForSubfolders, ERROR
If Value In 0,1
{
AskForSubfolders := Value
}
IniRead, Value, %IniFile%, Settings, StartVolume, ERROR
If Value Between 25 And 75
{
StartVolume := Value
}
}
; ------------------------------------------------------------------------------
; INI-Datei speichern
; ------------------------------------------------------------------------------
INI_Write()
{
Global IniFile
Global StartWithPrevSel
Global StartFolder
Global StartVolume
Global AskForSubfolders
Iniwrite, %StartWithPrevSel%, %IniFile%, Settings, StartWithPrevSel
IniWrite, %StartFolder%, %IniFile%, Settings, StartFolder
IniWrite, %AskForSubfolders%, %IniFile%, Settings, AskForSubfolders
IniWrite, %StartVolume%, %IniFile%, Settings, StartVolume
}
; ------------------------------------------------------------------------------
; Einstellungs-Gui
; ------------------------------------------------------------------------------
User_Defaults()
{
Global IniFile
Global StartWithPrevSel
Global StartFolder
Global StartVolume
Global AskForSubfolders
Static CB1
Static ED1
Static TX1
Static ED2
Static CB2
Static SL1
Static ED1ID
Static ED2ID
Gui, 9:Default
Gui, +Owner1 +ToolWindow +AlwaxsOnTop +LabelGuiSet
Gui, Font, s10
Gui, Margin, 20, 20
Gui, Add, CheckBox, vCB1, % " Mit letzter Auswahl Starten"
GuiControl, , CB1, %StartWithPrevSel%
Gui, Add, Text, vTX1
, Startordner für das Hinzufügen von Dateien und Ordnern
GuiControlGet, P, Pos, TX1
W := PW - 35
Gui, Add, Edit, xp y+5 r1 w%W% vED1 hwndED1ID, %StartFolder%
Gui, Add, Button, x+5 yp w30 hp gGuiSetBTSEL, ...
Gui, Add, Checkbox, xm y+5 vCB2
, % " Beim Hinzufügen von Ordnern`n auf Unterordner prüfen"
GuiControl, , CB2, %AskForSubfolders%
Gui, Add, Text, xm, Lautstärke beim Start der Anwendung
Gui, Add, Edit, xm y+5 h20 Right ReadOnly vED2 hwndED2ID
, %StartVolume%
GuiControlGet, P, Pos, ED2
W := W - PW + 30
Gui, Add, Slider, x+5 yp w%W% hp Range25-75 AltSubmit vSL1 gGuiSetSL1
, %StartVolume%
X := ((W + PW + 40) // 2) -15
Gui, Add, Button, x%X% w30 gGuiSetBTOK, OK
Gui, Show, , Einstellungen
Gui, +LastFound
WinWaitActive
WinWaitClose
Return
; ---------------------------------------------------------------------------
GuiSetClose:
GuiSetEscape:
Gui, Destroy
Return
; ---------------------------------------------------------------------------
GuiSetBTOK:
Gui, +OwnDialogs
Gui, SubMit, NoHide
If (ED1 <> "") {
If (!InStr(FileExist(ED1), "D")) {
MsgBox, 16, Fehler, Das Startverzeichnis %ED1% ist ungültig!
ControlFocus, , ahk_id %ED1ID%
Return
}
}
StartWithPrevSel := CB1
StartFolder := ED1
AskForSubfolders := CB2
StartVolume := SL1
INI_Write()
GoSub, GuiSetClose
Return
; ---------------------------------------------------------------------------
GuiSetSL1:
Gui, Submit, NoHide
ControlSetText, , %SL1%, ahk_id %ED2ID%
Return
; ---------------------------------------------------------------------------
GuiSetBTSEL:
Gui, +OwnDialogs
FileSelectFolder, Folder, %StartFolder%, 0, % "Bitte Startordner auswählen:"
If (!ErrorLevel) {
ControlSetText, , %Folder%, ahk_id %ED1ID%
}
Return
}
; ------------------------------------------------------------------------------
; Hilfe-Gui für Hotkeys
; ------------------------------------------------------------------------------
Help_Hotkeys()
{
Static TX1
HotKeyHelp := ""
. "Einige Funktionen des PMR lassen sich auch über Tastatur- bzw.`n"
. "Mauskürzel bedienen. Sämtliche Kürzel werden mit der Kombination`n"
. "Strg+Win(dowstaste) eingeleitet. Die folgende Tastenangabe`n"
. "bezieht sich auf den Ziffernblock mit deutscher Belegung, Wheel`n"
. "ist das Mausrad, LButton/RButton die linke/rechte Maustaste."
HotkeyDesc := ""
. "Strg+Win+WheelUp|Lautstärke erhöhen`n"
. "Strg+Win++ (Plus)|Lautstärke erhöhen`n"
. "|`n"
. "Strg+Win+WheelDown|Lautstärke verringern`n"
. "Strg+Win+- (Minus)|Lautstärke verringern`n"
. "|`n"
. "Strg+Win+LButton|Nächster Titel`n"
. "Strg+Win+Enter|Nächster Titel`n"
. "|`n"
. "Strg+Win+RButton|Abspielen beenden`n"
. "Strg+Win+Entf (.,)|Abspielen beenden`n"
. "|`n"
. "Strg+Win+Einfg (0)|Mute: Lautstärke aus/an"
Gui, 9:Default
Gui, +Owner1 +Toolwindow +AlwaysOnTop +LabelGuiHelpHk
Gui, Font, s10
Gui, Margin, 10, 10
Gui, Add, Picture, w32 h32 AltSubmit Icon5, USER32.DLL
Gui, Add, Text, x+10 ym vTX1, % HotkeyHelp
GuiControlGet, P, Pos, TX1
W := PW + PX - 10
StringSplit, Hotkey, HotkeyDesc, `n
Gui, Add, ListView, xm y+10 w%w% r%Hotkey0% Grid Readonly NoSortHdr 0x2000
, Hotkey|Aktion
Loop, % Hotkey0
{
StringSplit, Desc, Hotkey%A_Index%, |
LV_Add("", Desc1, Desc2)
}
LV_ModifyCol(1, "AutoHdr")
X := ((W + 20) // 2) - 20
Gui, Add, Button, x%X% y+10 w40 Default gGuiHelpHkClose, OK
Gui, Show, , Tastatur- und Mausbedienung
Gui, +LastFound
WinWaitActive
WinWaitClose
Return
; ---------------------------------------------------------------------------
GuiHelpHkClose:
GuiHelpHkEscape:
Gui, Destroy
Return
} |
Was kann es zusätzlich:
Es kann eigene Playlisten verwalten (Menü "Playlist").
Es lässt zu, dass Listeneinträge mit Doppelrechtsklick gelöscht werden.
Es kann ausgewählte Dateien abspielen (CheckBox klicken).
Es kann die Dateien in "zufälliger" Reihenfolge abspielen.
Es kennt den "Panikstopp" auch beim Abspielen mehrerer Dateien.
Es lässt zu, dass die Fensterbreite verändert wird.
Ich habe versucht, es so gut wie möglich auszutesten, aber: "Nobody's perfekt!". So bitte ich Euch, es richtig zu quälen und mir die von Euch festgestellten Fehler oder Eure Änderungswünsche mitzuteilen. Ich werde dann sehen, was ich für Euch tun kann.
Update v2.1:
Benutzerdefinierte Voreinstellungen über Einstellungsfenster und INI-Datei
- Programmstart mit letzter Auswahl
- Startordner für das Hinzufügen von Ordner und Dateien
- Unterordner beim Hinzufügen von Ordnern berücksichtigen
- Lautstärke bei Programmstart
(Dank an garry)
Teilweise Bedienung über Tastatur- und Maushotkeys
- Siehe Hilfemenü -> Tastatur- und Mausbedienung
(Danke an DerRaphael, die Idee mit den Icons hatte ich noch nicht!)
Endloses Abspielen.
Im zufälligen Modus wird dabei jedes Mal eine neue Reihenfolge erzeugt.
Entfernen von mehreren mit Shift-Klick oder Ctrl-Klick ausgewählten Titeln per Doppelrechtsklick. _________________ Hilfe zur Hilfe
(de)nick
Zuletzt bearbeitet von denick am Do Jan 17, 2008 6:31 am, insgesamt 5-mal bearbeitet |
|
| Nach oben |
|
 |
garry
Anmeldedatum: 25.10.2005 Beiträge: 442 Wohnort: switzerland
|
Verfasst am: So Jan 13, 2008 10:33 pm Titel: |
|
|
| Zitat: | | damit es hier auch "Support" dafür gibt. |
danke, sehr schön denick, nichts besseres zu tun ?
erhielt Fehlermeldung
gegen Schluss , sollte Playlist heissen ( statt Playliste)
Menu, MenuBar, % Option, &Playlist
wünsche euch schönes Wochenend-Ende |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: So Jan 13, 2008 10:56 pm Titel: |
|
|
Moin garry,
es sind immer wieder die Änderungen in letzter Sekunde, die man dann doch nicht getestet hat. Ist korrigiert!
| Zitat: | | danke, sehr schön denick, nichts besseres zu tun ? |
Ist halt Wochenende!  _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
garry
Anmeldedatum: 25.10.2005 Beiträge: 442 Wohnort: switzerland
|
Verfasst am: Mo Jan 14, 2008 7:41 am Titel: |
|
|
danke, sehr schön , macht richtig Freude mal wieder Musik zu hören am Computer
schön übersichtlich, um es kompliziert zu machen , evtl paar (unnötige) Funktionen dazukleben:
-Anzeige des letzten gewählten Ordners/files bei start
-FileselectFolder , suche ab voreingestelltem Folder, evtl checkbox suche auch in subfolder |
|
| Nach oben |
|
 |
IsNull
Anmeldedatum: 20.12.2006 Beiträge: 1326 Wohnort: CH
|
Verfasst am: Mo Jan 14, 2008 8:16 am Titel: |
|
|
hehe, "Wünsch dir was" - finde ich gut
Folgende Vorgeschichte:
Ich habe einige PCs/Lappis bei mir zu Hause stehen. Nun, mein Hauptrechner hat ne Macke an der Onboard-Soundkarte. Deswegen muss ich (und es ist wirklich ein Muss, da ich Musik brauche) einen anderen PC starten und dort meine Musik abspielen lassen^^ Nur muss ich zum bedienen des players immer zu der Kiste greifen. Und nen Remote-Desktop ist dafür aber auch irgendwie schade...
-> Nun, obwohl es sowas sicher irgendwo schon gibt, wäre eine Funktion, mit der man den player über ne tcp/ip Verbindung connecten und dann steuern könnte interessant. Im engl. Forum gibts einige client/server skripte, welche auf winsock aufbauen... Das wäre doch mal ne Herausforderung, denick  _________________
http://securityvision.ch
www.forum.securityvision.ch |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Mo Jan 14, 2008 9:21 am Titel: |
|
|
@garry:
Das sollte machbar sein. Ich bin sowieso noch am Entwickeln.
@IsNull:
Das wäre wirklich eine Herausforderung. Ich schau es mir mal an, aber möglicherweise ist das eine Nummer zu groß.
Schaun wir mal!  _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
Ripp3r]D3[
Anmeldedatum: 11.11.2007 Beiträge: 743 Wohnort: Altenburg\Kernel32.dll
|
Verfasst am: Mo Jan 14, 2008 10:19 am Titel: |
|
|
Hatte schon mal einen ******* gecoded ich denke mit dem fernsteuern sollte kein Problem sein.
Ich werde mich mal an dem problem wagen xD
So zufrieden???? _________________
ResistantX:
"...In deren Köpfen läuft das selbe Programm welches auch bei den früheren Jahrgängen lief! Ich bin der Virus der diese Programme zerstören will..."
Zuletzt bearbeitet von Ripp3r]D3[ am Mo Jan 14, 2008 4:23 pm, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Mo Jan 14, 2008 11:41 am Titel: |
|
|
| Ripp3r]D3[ hat Folgendes geschrieben: | | Hatte schon mal einen ****** gecoded ich denke mit dem fernsteuern sollte kein Problem sein. |
Moin,
muss das hier sein?
Vielleicht nutz Du für sowas lieber eine PN.  _________________ Hilfe zur Hilfe
(de)nick
Zuletzt bearbeitet von denick am Do Jan 17, 2008 6:37 am, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
Ripp3r]D3[
Anmeldedatum: 11.11.2007 Beiträge: 743 Wohnort: Altenburg\Kernel32.dll
|
Verfasst am: Mo Jan 14, 2008 3:25 pm Titel: |
|
|
Wieso net ist doch ein freies land oder (guter witz)
Nochmal zu den rechnern sind die im netzwerk oder über i-net verbunden? _________________
ResistantX:
"...In deren Köpfen läuft das selbe Programm welches auch bei den früheren Jahrgängen lief! Ich bin der Virus der diese Programme zerstören will..." |
|
| Nach oben |
|
 |
IsNull
Anmeldedatum: 20.12.2006 Beiträge: 1326 Wohnort: CH
|
Verfasst am: Mo Jan 14, 2008 4:11 pm Titel: |
|
|
Du bist mir vielleicht ein Held... seit in Deutschland das neue "Hacker-Gesetz" wirk ist...
... die Herstellung...
.... der Vertrieb...
... sogar der Besitz...
...von hackertools strafbar.
Wenn du hier also so freigiebig solche Dinge rum erzählst, müsste evtl (kA) ein Admin od. Mod deine IP melden...und du müsstest mit Konsequenzen rechen. Also auch deinetwegen solltest du dich öffentlich mit solchen Sprüchen zurückhalten.
/ot:
| Zitat: | | Nochmal zu den rechnern sind die im netzwerk oder über i-net verbunden? | Das spielt doch keine Rolle, oder? _________________
http://securityvision.ch
www.forum.securityvision.ch |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Di Jan 15, 2008 6:42 am Titel: |
|
|
Moin garry,
schau mal oben nach. _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
garry
Anmeldedatum: 25.10.2005 Beiträge: 442 Wohnort: switzerland
|
Verfasst am: Mi Jan 16, 2008 8:00 pm Titel: |
|
|
| danke denick, vielen Dank für die Erstellung der gewünschten Funktionen |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Do Jan 17, 2008 6:39 am Titel: |
|
|
Moin,
v2.1 ist da (s.o.)! _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
garry
Anmeldedatum: 25.10.2005 Beiträge: 442 Wohnort: switzerland
|
Verfasst am: Do Jan 17, 2008 7:42 am Titel: |
|
|
| vielen Dank, viel Arbeit dahinter, sieht optimal aus .... |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|