Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mp3's mit eigenem programm öffnen (https://www.delphipraxis.net/15357-mp3s-mit-eigenem-programm-oeffnen.html)

Alex_ITA01 27. Jan 2004 08:04


Mp3's mit eigenem programm öffnen
 
hallo erstmal,
ich habe mir ein kleinen player geschrieben und kann dort mp3,wav und ogg laden und in einer listbox anzeigen und abspielen.geht es jetzt irgendwie das wenn ich im windows auf ne mp3 klicke und sage öffnen mit und dann meine exe angebe und das lied dann genauso in der liste mit drinne steht? hoffe wisst was ich mein :-)

mfg Alex

SirThornberry 27. Jan 2004 08:14

Re: Mp3's mit eigenem programm öffnen
 
sollte gehen wenn du dein programm richtig geschrieben hast. Um die Parameter zu bekommen nimm ParamStr oder hab ich die Frage falsch verstanden??

Alex_ITA01 27. Jan 2004 08:20

Re: Mp3's mit eigenem programm öffnen
 
weiß nciht ob du sie falsch verstanden hast...
also ich habe ganz normale listbox und ein laden button,da wo die dateien in die liste geladen werden eben.aber nun will ich die mp3 im windos öffnen aber mein programm lädt die dann nicht rein in die listbox das irgendwie komisch weiß nicht woran es liegt

Treffnix 27. Jan 2004 09:04

Re: Mp3's mit eigenem programm öffnen
 
Zunächst musst du Windows ja mal erzählen, dass du .mp3-Dateien mit deinem Programm öffnen möchtest, anstatt mit dem Mediaplayer oder Winamp...
Sprich: du musst Dateien mit der Endung .mp3 mit deinem Programm verknüpfen.
Wenn du das gemacht hast, sollte Windows beim Doppelklick auf eine MP3-Datei z.B. im Explorer dein Programm starten und ihm den Dateinamen als Parameter übergeben. Diesen Parameter musst du dann halt im Programm verarbeiten.

Brüggendiek 27. Jan 2004 12:05

Re: Mp3's mit eigenem programm öffnen
 
Hallo!

@Treffnix:
Zitat:

Zitat von Alex_ITA01
geht es jetzt irgendwie das wenn ich im windows auf ne mp3 klicke und sage öffnen mit und dann meine exe angebe und das lied dann genauso in der liste mit drinne steht

Dadurch ist das Registrieren der Erweiterung nicht nötig.

Die neue Datei soll in die Playliste aufgenommen werden.
Deshalb ist etwas an Aufwand nötig. Beim Öffnen einer Datei mit einem Programm (egal ob es das zur Endung registrierte ist, "Öffnen mit" oder ein eigener Eintrag im Kontextmenü benutzt wird) startet Windows eine weitere Instanz des Programmes. Dieses erhält als 1. Parameter den vollständigen Namen der zu öffnenden Datei. Sind mehrere Dateien markiert, wird für jede das Programm einmal gestartet.

Es muß also der wiederholte Programmstart festgestellt werden und dann muß man die Dateinamen an die erste Instanz übermitteln.
Der Parameter des Programms (Dateiname) steht in "Paramstr(1)".
Zum Thema "Nur eine Instanz" sollte die Forensuchen einiges liefern - und zur Übertragung des Dateinamens bietet sich das Stichwort "WM_COPYDATA" an. Das Ganze ist hier doch schon öfter vorgekommen.

Gruß

Dietmar Brüggendiek

Treffnix 27. Jan 2004 12:14

Re: Mp3's mit eigenem programm öffnen
 
@Brüggendiek: :oops: Hast natürlich Recht. Das Wörtchen "mit" hatte ich überlesen. Das kommt davon, wenn man ohne Punkt und Komma schreibt... :wink:

Alex_ITA01 28. Jan 2004 10:58

Re: Mp3's mit eigenem programm öffnen
 
@Brüggendiek:
ich habe das jetzt mal so gelöst:
Formcreate:

Parameter2 := Paramstr(1);
if Parameter2 <> '' then
Form5.ListBox1.Items.Add(Parameter2);


aber es geht nicht.habe bestimmt was falsch verstanden oder?
kannst du mir mal ein beispiel zeigen wo ich ne datei öffne und den namen in die listbox eintrage?
mfg alex

Brüggendiek 28. Jan 2004 20:42

Re: Mp3's mit eigenem programm öffnen
 
Hallo Alex!

Da haben wir ja mal wieder die aussagekräftige und umfassende Fehlerbeschreibung, die wir alle so lieben :mrgreen: :
Zitat:

Zitat von Alex_ITA01
aber es geht nicht.

Was geht nicht?

- der Compiler weigert sich, das zu übersetzen,
- das Programm stürzt ab,
- es steht nachher nichts in der Playliste,
- es steht nur eine Datei in der Playliste ?

Letzteres erschein mir am wahrscheinlichsten. Wie ich bereits erklärt hatte, startet Windows für jede Datei das zugeordnete Programm einmal. Läuft das Programm schon, wird diese Tatsache ignoriert und dann läuft das Programm eben zweimal.
Dieses Verhalten ist natürlich nicht immer gewünscht. Hier muß der Programmierer schon dafür sorgen, daß sowas unterbunden wird.
Der Code, wie man Mehrfachstarts verhindern kann, steht hier im Forum - bitte die Forensuche benutzen!
Dann muß man noch den Parameter, also "ParamStr(1)", an die erstgestartete Instanz übergeben. Das kann man mit der Nachricht "WM_COPYDATA" geschehen - auch dazu sollte die Forensuche Brauchbares (Code!) liefern.

Nebenbei: Die Zwischenvariable in Deinem Code ist nicht unbedingt erforderlich.

Gruß

Dietmar Brüggendiek

Edit: @Mods: gehört das überhaupt zu Programmieren allgemein - eher nicht, geht ja um Delphi!

Alex_ITA01 29. Jan 2004 07:02

Re: Mp3's mit eigenem programm öffnen
 
@Brüggendiek:
also der compiler schmiert nicht ab,und das programm hängt sich auch nicht auf.
es steht einfach nur nichts in der playliste.
den doppelstart des programms habe ich schon verhindert (also programmiert)
das mit der zwischenvariable habe ich nur erstmal so gemacht,klar kann die weg nur leider sehe ich kein dateinamen in der liste :-(

Alex_ITA01 29. Jan 2004 08:11

Re: Mp3's mit eigenem programm öffnen
 
@daniel seehase
ich habe mir mal deine MulitFileDemo gezogen und mal von FormShow den Source in mein Programm kopiert.Also:

procedure TForm1.FormShow(Sender: TObject);
begin
if (paramcount > 0) and FileExists(paramstr(1)) then begin
Form5.Listbox1.Items.Add(paramstr(1));
end;
end;

nur leider wenn ich ne mp3 öffne dann bekomme ich kein pfad in die listbox zurück geliefert.
ich habe jetzt mal probiert unter run->parameter und dann meine exe angegeben und bei parameter einfach mal: C:\Dokumente und Einstellungen\Praktikum\Desktop\Witz.txt
und wenn ich mir mal paramstr(1) in eine variable (string) geben lasse steht nur: C:\Dokumente drinne. daher geht er auch nie in die if abfrage rein.woran liegts?
mfg alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz