Seite 1 von 2

Frage: File Association für einen Musik Player

Verfasst: 24.01.2014 13:20
von udg
Hallo.

Ich habe folgendes Script gefunden und nach bestem Wissen für meine Zwecke erweitert.
Nun, mehr als das ganze in die Registry eintragen tut es aber noch nicht...

... weder das Player Icon wird für das entsprechende SoundfileFormat übernommen, noch kann ich dann das entsprechende SoundFile doppelklicken, sodass es mir dann automatisch den Player öffnet und abgespielt wird.

Kann mir bitte jemand helfen der dies schon einmal bewerkstelligt hat und genau weiss wie dies zu realisieren ist?
Leider hatte ich beim 3ten Versuch falsche Fehler im Code die mir dann die Reg zerschossen hat und ich den PC neu aufsetzen musste. :shock: :shock:

ACHTUNG: UMSCHREIBEN AM CODE KANN WIE
OBEN GESCHRIEBEN, DAS SYSTEM RUINIEREN.

weiterin ist der hier aufgeführte Code nicht richtig. Nur mein erster Versuch gewesen.
Hier mein Script:

Code: Alles auswählen

#SHCNE_ASSOCCHANGED = $8000000
#SHCNF_IDLIST = $0

Define.s extension, fileType, description, icon, open
Define.i fileKey, shellKey, keyPtr

extension = ".v2m"
fileType = "V2MPlayer.File.v2m"
RegCreateKey_(#HKEY_CLASSES_ROOT, extension, @keyPtr)
RegSetValue_(keyPtr, "", #REG_SZ, @fileType, 0)

description = "v2m module"
fileKey = RegCreateKey_(#HKEY_CLASSES_ROOT, fileType, @keyPtr)
RegSetValue_(keyPtr, "", #REG_SZ, @description, 0)

icon = "c:\V2M Player_Beta.exe ,-1"   ;replace with ProgramFilename() + ",-1"
RegCreateKey_(fileKey, "DefaultIcon", @keyPtr)
RegSetValue_(keyPtr, "", #REG_SZ, @icon, 0)

open = "c:\V2M Player_Beta.exe %1"   ;replace with ProgramFilename() + " %1"
shellKey = RegCreateKey_(fileKey, "shell", @keyPtr)
RegCreateKey_(shellKey, "open", @keyPtr)
RegSetValue_(keyPtr, "", #REG_SZ, @open, 0)

SHChangeNotify_(#SHCNE_ASSOCCHANGED, #SHCNF_IDLIST, 0, 0)
LG

Re: Frage: File Association für einen Musik Player

Verfasst: 11.02.2014 23:44
von N00B
Mein Tip, benutz VirtualBox und setz da ein virtuelles Windows auf (das kannst zurücksetzen wenn es zurschossen hast)
und probier erst mal die internen Windows Befehle für solche Experimente in dem virtuellen Windows (um überhaupt zu gucken, ob es gehen würde, wenn denn was in die Registry geschmissen wird)

Mit dem Windows Shell Befehl "Reg" kannst Registry Keys setzen usw

Code: Alles auswählen

Konsolenregistrierungsprogramm für Windows - Version 3.0
Copyright (C) Microsoft Corp. 1981-2001. Alle Rechte vorbehalten


REG Befehl [Parameterliste]

  Befehl  [ QUERY   | ADD    | DELETE  | COPY    |
            SAVE    | LOAD   | UNLOAD  | RESTORE |
            COMPARE | EXPORT | IMPORT ]

Rückgabecode: (Mit Ausnahme von REG COMPARE)

  0 - Erfolgreich
  1 - Fehlgeschlagen

Geben Sie Folgendes ein, um die Hilfe für einen Befehl anzuzeigen:

  REG Befehl /?

Beispiele:

  REG QUERY /?
  REG ADD /?
  REG DELETE /?
  REG COPY /?
  REG SAVE /?
  REG RESTORE /?
  REG LOAD /?
  REG UNLOAD /?
  REG COMPARE /?
  REG EXPORT /?
  REG IMPORT /?
http://de.wikipedia.org/wiki/VirtualBox

Re: Frage: File Association für einen Musik Player

Verfasst: 12.02.2014 01:02
von udg
Danke für deinen Beitrag. Habe alles perfekt inzwischen eingearbeitet und funktioniert.

Es schreibt mir die Registry Keys für die Befehle:
~ eigenes Icon (wird aus der Player Exe gelesen und für die Soundfiles übernommen
~ doppelklick der Musikdatei öffnet den Player und spielt die Musik ab

alles so wie es sein soll.

nochmals vielen Dank.

Re: Frage: File Association für einen Musik Player

Verfasst: 12.02.2014 01:17
von N00B
Gerngeschehen :)

Freut mich das alles so funzt wie es soll, jetzt kennst ja VirtualBox, ist echt richtig nützlich das Teil :allright: da kannst dich so richtig austoben :bounce:

Re: Frage: File Association für einen Musik Player

Verfasst: 12.02.2014 01:26
von udg
Ich hatte es so gelöst:
einen Wiederherstellungspunkt angelegt, dann probiert und wenns Fehler gab, System zurückgesetzt.
Funzt :) und passt so.

Virtuelle Umgebung wollte ich nicht erst installieren. Hatte auch erst die Idee das Ganze über ein 2tes Benutzerkonto zu machen aber dort ist die Registry Systemübergreifend. (bringt also nix)

Einziges Problem was ich im Moment noch habe:
Wenn ich ein anderes Soundfile doppelklicke öffnet es mir den Player erneut. Der Sound wird also nicht in den bereits geöffneten player geladen und abgespielt.
Muss ich noch suchen wie es richtig gemacht wird.

Grüße

Re: Frage: File Association für einen Musik Player

Verfasst: 12.02.2014 10:13
von Bisonte
Eventuell mal bei einem anderen Player in der Registry "abgucken", wie der das macht.... WMP oder evt. WinAmp.

Re: Frage: File Association für einen Musik Player

Verfasst: 12.02.2014 10:48
von jear
Wenn ich ein anderes Soundfile doppelklicke öffnet es mir den Player erneut. Der Sound wird also nicht in den bereits geöffneten player geladen und abgespielt.
Eine der Lösungen:

Wenn der Player startet, prüft er, ob bereits ein Kumpel läuft. Dieser hat zuvor ein Mutex creiert z.B. "Player schon unterwegs". Daher wird der Versuch diesen Mutex erneut zu erstellen mit einem Fehler abgewiesen. In diesem Falle muss der zweite Player dem Fenster des Ersten per Message Pfad und Namen der neuen Datei senden und sich sang und klanglos beenden. Der Erste stoppt das Abspielen der vorherigen Datei und startet die neue Datei.

Klingt kompliziert, ist es aber nicht.

Code: Alles auswählen

; Wenn Player schon läuft
Player_running = CreateMutex_(0, 0, @"Player schon unterwegs") 

If GetLastError_() = #ERROR_ALREADY_EXISTS
  
  ; finde Fenster des ersten Players
  ; sende diesem Fenster Pfad und Dateinamen
  ; warte Quittung ab
  
  End
  
EndIf ; ERROR_ALREADY_EXISTS ============>>>>

Re: Frage: File Association für einen Musik Player

Verfasst: 13.02.2014 03:27
von udg
Danke für den Code Schnipsel.

Leider finde ich noch nicht den passenden Code um das Ganze ordentlich lauffähig zu bekommen.

im Moment ist es so:
der Player startet, wenn ich nun auf ein Soundfile doppelklicke schließt sich der Player und ein neuer wird geöffnet und spielt den neuen Sound.
so solls ja aber nicht sein :(

zum verzweifeln.

Ich häng mal den Player als Beispiel an:
http://rghost.net/private/52395439/f3b9 ... 6da5d6e104

Wie realisiere ich, dass es nur einen neuen Song reinlädt (nicht den Player schließt und wieder neu öffnet) und natürlich die Position des Players nicht verändert. denn beim Neustart wird dieser ja immer zentriert geladen.

Danke Euch
LG

Re: Frage: File Association für einen Musik Player

Verfasst: 13.02.2014 11:21
von ts-soft
Den Tipp von jear befolgen!

Bei jedem Start feststellen, bin ich die erste Instance (per CreateMutex_() oder auch durch eine
Datei).
Bin ich nicht die erste Instance, dann das Handle zur ersten Instance ermitteln und z.B. per
#WM_COPY_DATA den zu spielenden Titel mitteilen.
Danach nur noch beenden, die erste Instance muß nur noch auf die Message reagieren und
den übermittelten Titel abspielen.

Re: Frage: File Association für einen Musik Player

Verfasst: 13.02.2014 17:25
von udg
hallo,

ich habe mit seinem Beispiel angefangen und stecke jedoch fest. das Fenster wird nicht erkannt. Keine ahnung warum.
Der Player besteht aus 2 Fenstern.
Fenster 0 beinhaltet die Grafik und Fenster 1 die Gadgets und den Code.
Beide sind verknüpft mit: SetWindowCallback(@MainCallback(), 1)
sodass man sie nur zusammen verschieben kann (sie nicht unabhängig voneinander rumschwirren)

im Moment: Ratlosigkeit. werde weiterprobieren

Danke