Autor Beitrag
mtm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Mo 06.07.15 16:54 
Hallo zusammen !

Die Überschrift habe ich eigentlich schon erledigt. Ich habe einen kleinen MP3-Player geschrieben und habe es auch hingekriegt, den als Standardprogramm für MP3's zu starten.
Das Problem liegt jetzt daran, daß, wenn ich mehrere MP3's im Explorer markiere und dann auf 'Öffnen' clicke, für jede Datei das Programm in einer Extra-Instanz gestartet wird. Ich hätte es aber gerne so, daß es bei mehreren Dateien nur einmal geöffnet wird und eine Playlist erstellt.

Im Augenblick habe ich noch keine Idee, wie ich das hinkriegen soll. Vielleicht kennt ja jemand die Lösung.

Danke im Voraus
mtm
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Mo 06.07.15 18:44 
Hallo,
genau das problem hatte ich auch und habe es folgendermaßen gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
INITIALIZATION
  { Bei einer Mehrfachauswahl startete Windows für jede Anwahl die Application. }
  { Das ist unpraktisch. Deshalb wird nur die erste gestartete Imstanz am Leben }
  { gehalten und muss die Arbeit machen. Die weiteren Instanzen tragen nur den  }
  { Filnemane aus der Paramaterliste in ein shared Memory ein und beendet sich  }
  { dann. }
  sollabbrechen := false;
  IF paramcount > 0 THEN
    BEGIN
      SharedDateiliste := TSharedDateiliste.Create;
      akt_filename := paramstr(1);
      quelle := shared;
      akt_filelen := get_Dateilaenge(akt_filename);
      SharedDateiliste.puteintrag(akt_filename, akt_filelen);
      IF NOT SharedDateiliste.selbst_kreiert THEN
        BEGIN
          SharedDateiliste.Free;
          sollabbrechen := true;
        END
    END;

FINALIZATION

END.


Einen schöneren Weg habe ich nicht gefunden. Lücke: Die erste Instanz ist fertig, bevor Windows alle Instanzen getartet hat. Evtl. Nach einem delay erneut nachsehen, ob was in der Liste steht.

Die SharedDateiListe habe ich Dir in den Anhang gepackt.

Viel Erfolg,
GuaAck.
Einloggen, um Attachments anzusehen!
mtm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Di 07.07.15 21:09 
@GuaAck :
Danke für Deine Antwort. Ich habe aber doch schon einen andere Lösung gefunden. Ich benutze die Komponente TOneinstance. Habe ich auf torry.net gefunden. Funktioniert ziemlich gut.

Grüße
mtm
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 07.07.15 22:45 
Danke für den Hinweis. Die Komponente TOneInstance stammt von der Loonies Software Group und unterstützt lediglich folgende IDEs:

  • Delphi 5
  • Delphi 6
  • Delphi 7
  • Delphi 2007
  • Delphi 2009
  • Delphi XE
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Mi 08.07.15 23:43 
Hallo mtm,

ich habe mir nur den Code der Komponente angesehen, aber nicht installiert. Das Prinzip ist ähnlich dem meinen: "Dem ersten Aufruf die Arbeit übergegeben...". Mir scheint, der Übergabemechanismus ist anders, aber den habe ich auch nicht durchgearbeitet.

Interessant finde ich aber die geringe Resonanz auf Deine Frage! Ich erwartete auf meinen Beitrag durchaus Kritik, wie ich so einen Pfusch machen könne.(Eine Antwort darauf hätte ich parat.)

Gruß Guaack