| Autor |
Beitrag |
Andi1982
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Di 03.06.03 20:08
Hallo,
ich will aus meinem Programm heraus eine *.mp3 datei öffnen. Aber wie funktioniert das?? Wenn man Sie anklickt soll sich Winamp oder die mit *.mp3 verknüpfte anwendung öffnen und diese abspielen.
Hab mal grob gehört dass man sowas über shell macht, aber davon habe ich absolut keine Ahnung. Kann mir jemand ein beispiel zeigen oder so??
Gruß Andi
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 03.06.03 20:12
Suchfunktion <-- ShellExecute.
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Di 03.06.03 20:14
So:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var Datei: String; Datei1: Array[0..255] Of Char; begin
If FileExists('C:\Winamp\Schießmichtot.mp3') Then Datei1:='C:\Winamp\Schießmichtot.mp3'; StrPCopy(Datei, Datei1); ShellExecute(0, Nil, Datei, Nil, Nil, SW_NORMAL); end; |
So müßte das gehen, oder? Was meinst du dazu?
///edit -> Mathias war schneller. Ist aber auch keine Kunst, sein Text war wesentlich kürzer als meine. Aber er hat auch Recht.  Übrigens nicht vergessen, ShellApi in die Uses aufzunehmen.. 
_________________ Hasta La Victoria Siempre
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Di 03.06.03 20:17
Ahhh ja, so dürfte es gehen!
@Mathias: Wenn man weiß nach was man suchen muss ist alle kein problem, hab aber nur nach "Shell Execute" gesucht.
Dank euch!!
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Di 03.06.03 20:22
Terra, da bringt er einen Compile Fehler: Inkompatible Typen 'String' und 'PChar'
und zwar in diesen beiden Zeilen:
Delphi-Quelltext 1: 2:
| StrPCopy(Datei, Datei1); ShellExecute(0, Nil, Datei, Nil, Nil, SW_NORMAL); |
Warum??
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Di 03.06.03 20:25
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Brueggendiek
      
Beiträge: 304
Win 98, Win98SE, Win XP Home
D5 Std
|
Verfasst: Mi 04.06.03 00:44
Hallo Leute!
Was soll denn das werden wenns fertig ist????
Delphi-Quelltext 1: 2:
| StrPCopy(Datei, Datei1); ShellExecute(0, Nil, Datei, Nil, Nil, SW_NORMAL); |
Schreibt doch einfach:
Delphi-Quelltext 1:
| ShellExecute(0, Nil, PChar (Datei), Nil, Nil, SW_NORMAL); |
und gut isses!
Gruß
Dietmar Brüggendiek
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Mi 04.06.03 05:57
Ok,
habs jetzt mal ausprobiert, aber wenn ich dann den Button klicke der das ShellExecute ausführt öffnet sich nur Ein Ordnerfenster mit dem Aktuellen Arbeitsverzeichnis, also da wo meine Projektdateien drin sind.
Warum?
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 04.06.03 07:39
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 04.06.03 08:19
Hi,
kurze Zwischenfrage: das hier stimmt doch so, oder ?
Quelltext 1:
| ShellExecute(0, Nil, PChar (ListBox2.Items.Text), Nil, Nil, SW_NORMAL); |
Listbox1.Items.Text ist definitiv nicht leer. Abgespielt wird aber nichts. Die Verknüpfungen in Windows sind allerdings mit Musicmatch, kann das der Grund sein ?
_________________ Gruß
Hansa
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 04.06.03 12:09
| hansa hat folgendes geschrieben: | Quelltext 1:
| ShellExecute(0, Nil, PChar (ListBox2.Items.Text), Nil, Nil, SW_NORMAL); | |
ListBox2.Items.Text enthält alle Items einer Listbox, inkl. der Zeilenumbrüche, bspw in dem Format:
Quelltext 1: 2: 3:
| File1.mp3 File2.mp3 File3.mp3 |
So gesehen wundert es mich nicht, dass Windows nichts abspielt. Versuch´s doch stattdessen mal mit
Delphi-Quelltext 1:
| ListBox2.Items[ListBox2.ItemIndex] |
Das wäre der Eintrag, den du in der Listbox ausgewählt (= markiert) hast.
| Zitat: | | Die Verknüpfungen in Windows sind allerdings mit Musicmatch, kann das der Grund sein ? |
Hä?
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Mi 04.06.03 12:21
| MathiasSimmack hat folgendes geschrieben: |
| Zitat: | | Die Verknüpfungen in Windows sind allerdings mit Musicmatch, kann das der Grund sein ? |
Hä? |
Ich glaube damit meint er dass er anstatt winamp eben Musicmatch als Standardplayer für *.mp3-Dateien hat. Sollte aber normal nicht stören denke ich. Wenn du im Explorer die *.mp3-Dateien anklicken kannst und diese dann mit dem Musicmaker abgespielt werden, sollte es so doch auch gehen!
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 04.06.03 12:34
Hi,
Mathias hat Recht, habe den Thread vergessen, email Benachrichtigung geht seltsamerweise im Moment nicht. Meine Listbox war gerade klein genug um den Rest der Zeile nicht mehr zu sehen. Heute Abend probier ich das aus, sollte wohl schon gehen, sag ich mal ungetestet. 
_________________ Gruß
Hansa
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mi 04.06.03 13:15
@Andi: Bei mir kommt dann auch ein Explorer-Fenster. Ich denke, wir sind besser gehalten, wenn wir uns an Mathias halten.
@Mathias: Ich entschuldige mich mehrfach für den Fehler:
| Zitat: |
Sourcecode:
StrPCopy(Datei1, Datei);
|
Das war wohl meine Schuld.
@Andi: Was auch eine Lösung wäre, wenn du einen versteckten MediaPlayer benutzt und dann folgendes schreist:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| If FileExists('C:\Winamp\X.mp3') Then Begin Datei:='C:\Winamp.mp3'; MediaPlayer1.FileName:=Datei; MediaPlayer1.Open; MediaPlayer1.Play; End; |
Ist zwar nichts sehr elegnt, aber erfüllt den Zweck.
@Mathias: Was mich nochmal interessieren würde, wie zitiert ihr so, daß der Name des Autors dort steht???
_________________ Hasta La Victoria Siempre
|
|
Andi1982 
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Mi 04.06.03 13:22
| Terra23 hat folgendes geschrieben: |
@Mathias: Was mich nochmal interessieren würde, wie zitiert ihr so, daß der Name des Autors dort steht??? |
Das ist ganz einfach, entweder klickst du bei dem Post woraus zu zitieren willst auf zitat oder du benutzt beim Schreiben den Button "Quote" und setzt aber in den AnfangsTag direkt an das Quote anschließend ="Benutzer"
also im Anfangstag steht dann folgendes: quote="benutzer"
beispiel: [quote="michSelbst"] Zitat.... [/quote]
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mi 04.06.03 18:41
Danke. Das hat mir irgendwie keine Ruhe gelassen. Alle zitieren mit Namen und bei mir steht immer nur "Zitat". 
_________________ Hasta La Victoria Siempre
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 04.06.03 18:52
| Terra23 hat folgendes geschrieben: | @Mathias: Ich entschuldige mich mehrfach für den Fehler:
Delphi-Quelltext 1:
| StrPCopy(Datei1, Datei); | |
Und wieder völlig unnötig, denn in deinem Codebeispiel war´s noch richtig:
Delphi-Quelltext 1: 2: 3: 4:
| If FileExists('C:\Winamp\Schießmichtot.mp3') Then Datei1:='C:\Winamp\Schießmichtot.mp3';
StrPCopy(Datei, Datei1); |
(s. 03.06. 21:14 Uhr).  - Bitte künftig nur entschuldigen, wenn du wirklich Fehler machst. Dafür, dass andere nicht (ab)schreiben können, kannst du doch nichts. 
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 04.06.03 19:24
_________________ Gruß
Hansa
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Mi 04.06.03 20:37
Vermutung:
Listbox2.ItemIndex ist wahrscheinlich nicht bzw falsch belegt oder?
Speicher doch den ItemIndex in ne varialbe also z.B. So:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.ListBox1DblClick(Sender: TObject); var IIndex: Integer; begin IIndex := Listbox1.ItemIndex; ListBox2.Items.Add (ListBox1.Items[IIndex]); ListBox1.Items.Delete(IIndex); end; |
Getestet: geht!
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mi 04.06.03 20:53
@Mathias: Wie in dem anderen Posting schon geschrieben, ich nehme solche Sachen nie persönlich. Ich habe nur einfach gedacht, mein Code wäre falsch. Vielleicht sollte ich mir einfach mal mehr zutrauen, vor allem, daß ich auch mal etwas richtig posten kann, sollte ich mir zutrauen, denke ich.  Nun ja..
@Hansa: Das sehe ich auch so wie Tweafis. Dein ItemIndex existiert doch nur, wenn du eine Zeile markiert hast. Das müßte dann entweder in deinem Code passieren (sprich, du sagst ItemIndex:=Items.Count) oder du nimmst den Code von Tweafis. Hey, denn der funtkioniert wirklich. 
_________________ Hasta La Victoria Siempre
|
|