Media files koppelen aan mediaspeler

Status
Niet open voor verdere reacties.

bonnowagt

Gebruiker
Lid geworden
7 dec 2006
Berichten
445
Hall,

Ik heb een zeer uitgebreid mediaspeler gemaakt, doch het enige wat ik nu nog zou willen indien het mogelijk is hem te koppelen. Ik kan het nergens vinden en misschien wil ht ook niet. Mijn vraag is:

Ik wil mijn mediaspeler als standaard speler gebruiken om media af te spelen. Dit opzich is natuurlijk niet moeilijk kwestie van instellen, maar wat ik zou willen als ik bijvoorbeeld op een foto/mp3 enz bestand klik deze automatisch gaat laden in mijn mediaspeler en afspeelt. Dus zoals nu heb ik Winamp als standaard staan en die speelt wanneer ik bijv op een mp3 bestandje klik. Dit zou dus Ijn speler moeten worden.

Ik hoop op wat reacties en bedankt alvast

Groet
 
Daarvoor zijn registerwijzigingen nodig.

Code:
    My.Computer.Registry.ClassesRoot.CreateSubKey(".mp3").SetValue _
 ("", "MP3", Microsoft.Win32.RegistryValueKind.String)

        My.Computer.Registry.ClassesRoot.CreateSubKey _
 ("MP3\shell\open\command").SetValue("", Application.ExecutablePath & _
 " ""%l"" ", Microsoft.Win32.RegistryValueKind.String)

(Je kunt dat beter in een setup plaatsen, ofzo. Je hebt er namelijk administratorrechten voor nodig ;))

En dan in het Load-Event:

Code:
Try
          
     ' het pad is:  My.Application.CommandLineArgs(0)

        Catch
        End Try
 
Laatst bewerkt:
Vervolg

Allereerst geweldig bedankt voor je snelle reactie. Inderdaad werkt het niet als ik dit gewoon in een lad event zet, geen rechten, helemaal juist dus. Maar wat bedoel je met een setup geen idee hoe je dit ontwerpt. De tweede vraag is of ik dit voor alle bestanden, wav, mp3 enz apart moet doen?
 
Om een setup te maken die registerwijzigingen doorvoert kun je bijvoorbeeld Inno Setup Compiler gebruiken.

Dan voeg je dit toe:

Code:
[Registry]
Root: HKCR; Subkey: ".mp3"; ValueType: string; ValueName: ""; ValueData: "MP3"
Root: HKCR; Subkey: "MP3\shell\open\command"; ValueType: string; ValueName: ""; ValueData: {app}\appnaam %1

Dit is ongeveer de code die je moet gebruiken. Als je het niet begrijpt hoor ik het wel :)
 
Laatst bewerkt:
vervolg

Hoi,

Ik heb inmiddels Inno op mijn schijf staan maar heb geen enkel idee wat ik nu moet doen
 
Open het programma en selecteer 'Create a new script file using the Script Wizard'. Klik op OK en er komt een Wizard die je kan volgen :)

Als je die Wizard hebt voltooid kom je in de (door de wizard gegenereerde) code. Daar kun je mijn code toevoegen (en aanpassen naar jouw omstandigheden).
 
vervolg

Hallo,

Ik heb het volgende gedaan:

Inno opstarten:

1. create new script using wizard
2. aanvinken create a new script file
3. next
4. applicatename: Perfect Speler2
5. next
6. allow user to change the applicatiefolder staat aangevinkt
7. next
8. application main executable file:
c:\perfect speler2\medianieuw
add files:
alle files ingeladen van het programma
9. Next
10 Next
11 Next
12 Taal ingesteld op Dutch
13 Next
13 Next
14 Finish
15 Would you run enz.
16 No
17 Volgende code toegevoegd
Root: HKCR; Subkey: ".mp3"; ValueType: string; ValueName: ""; ValueData: "MP3"
Root: HKCR; Subkey: "MP3\shell\open\command"; ValueType: string; ValueName: ""; ValueData: {pf}\appnaam + "%1"
18 Compile
19 Foutmelding
Mismatced of misplaced quotes on parameter "Valuedata"
Ook zie ik in het script een rode streep onder "%1""(onder de aanhalingstekens)

Groet
 
OK, een voorbeeld:

Je moest 'appnaam' door je eigen programmanaam veranderen ;) Stel je programma heet: 'Test.exe'.

Dan voeg je dit toe:

Code:
[Registry]
Root: HKCR; Subkey: ".mp3"; ValueType: string; ValueName: ""; ValueData: "MP3"
Root: HKCR; Subkey: "MP3\shell\open\command"; ValueType: string; ValueName: ""; ValueData: {app}\Test.exe %1

(Er zat een fout in de vorige code, sorry :o. Dit: + "%1" mag namelijk niet...)
 
vervolg

Het is gelukt. Setup was goed.
Wat moet er nu precies tussen Try en Catch?
Ik neem aan dat de eerste code die je gaf niet meer hoeft?
 
Deze wel:

Code:
Try
     ' het pad is:  My.Application.CommandLineArgs(0)
        Catch ex As Exception
           'MsgBox(ex.Message)  'Je kunt een foutmelding weergeven
        End Try

Je kunt dit pad gebruiken om het bestand te laden.
 
Laatst bewerkt:
vervolg

Oke heel duidelijk maar welk pad moet ik nu opgeven:
(My.Application.CommandLineArgs(0)))
Waar staat dit voor?
 
Het is het pad :P.

Dus als je een bestand (.mp3 in dit geval) met jouw applicatie opent, wordt My.Application.CommandLineArgs(0) het pad van het bestand dat je probeert te openen. Probeer maar eens met een MsgBox o.i.d. dan kun je zien wat de waarde ervan is. :)
 
vervolg

waarschijnlijk ben ik nu dom bezig maar dit begrijp ik niet helemaal

Ik heb onderstaande code geplaatst bij de loadevent. Dit geeft een error.
(My.Application.CommandLineArgs(0)))

Waarschijnlijk moet ik daar een pad invoeren?., maar hoe?
 
Dat klopt, het is geen goede code. Wat probeer je te doen?
 
vervolg

Ik heb dit aan het load event toegevoegd zoals jij aan mij hebt opgegeven.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
My.Application.CommandLineArgs(0)
Catch ex As Exception
'MsgBox(ex.Message) 'Je kunt een foutmelding weergeven
End Try

Dit werkt niet een blauwe streep onder: My.Application.CommandLineArgs(0)
 
Nee :P, ik had dat als commentaar neergezet, met een apostrof ervoor, zodat je kon zien wat het pad is.

Voorbeeldcode:
Code:
Dim Pad As String = My.Application.CommandLineArgs(0)
If Pad.EndsWith(".mp3") Then
'Hier code plaatsen om de mp3 te laden, de variabele is nu 'Pad'. Misschien is dat makkelijker ;)
End If
 
vervolg

Ik heb het volgende dan opgegeven

Pad = ("C:\Perfect Speler2\Medianieuw.exe")

Maar dit zal wel nietgoed zijn, want het werkt niet
 
Ehm nee. Volgens mij begrijp je niet helemaal waar de code voor dient. Deze code moet je gebruiken om bestanden die met jouw programma worden geopend (en dat worden ze als je de setup hebt uitgevoerd) te gebruiken. Dus 'Pad' krijgt de naam van het bestand dat jouw programma opent, een MP3'tje in dit geval.

Snap je wat ik probeer uit te leggen? :)
 
Nee sorry ik snap niet hoe dit er dan zou moeten uitzien. De bedoeling is dat ik klik op een mp3 bestand de Mediaspeler automatisch wordt geopend maar dan ook direct deze afspeelt in mijn speler. Dus bijvoorbeeld klik ik in c:\muziek\help.mp3, vervolgens opent de Mediaspeler en speelt het liedje af.
 
Dat klopt! Deze code is bedoeld voor het openen van bestanden. Hiermee krijg je dus het pad van het bestand dat geopend is. My.Application.CommandLineArgs(0) krijgt die waarde (en Pad dus ook).

Hiermee kun je eenvoudig je mp3 openen :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan