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



BeitragVerfasst: Mo 22.12.03 01:18 
Hallo!
Ich hab mir ein tolles, simples Tool geschrieben, das die Tags mehrer MP3s ausliest und in einer Liste ausgibt.
Mit folgendem Code werden die Dateien bei Übergabe als Parameter zu Beginn ausgelesen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var i:integer;
begin
  Application.Initialize;
  Application.Title := 'MusicList';
  Application.CreateForm(TForm1, Form1);
  if ParamStr(1)<>'' then begin
    i:=1;
    while ParamStr(i)<>'' do begin
      Form1.InitAddFile(ParamStr(i));
      inc(i);
      end;
    Form1.InitFinish;
    end;
  Application.Run;

Das funktioniert soweit prima, aber nur wenn ich sagen wir 3 Dateien markiere und dann auf meine exe ziehe.
Ich habe in der Registry unter dem Dateityp 'MP3-Audioformat' einen Eintrag 'öffnen mit MusicList' erstellt, sodass ich jetzt 3 MP3 markieren kann, mit rechts daraufklicke und dann die Option habe 'öffnen mit MusicList'. Funktioniert auch prima, nur dass jetzt für jede Datei die exe ausgeführt wird, anstatt dass sie als Kette von Parametern alle auf einmal übergeben werden.
Jetzt suche ich nach einer Lösung, so wie das z.B. bei Winamp geht ('Enqeue in Winamp').
Folgenden Code habe ich aus der DP, damit ein Programm nicht mehrfach ausgeführt wird:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
initialization
   mHandle := CreateMutex(nil, True, 'MusicList');
     if GetLastError = ERROR_ALREADY_EXISTS then
     begin
       ShowMessage('Programm bereits geöffnet.');
       Halt;
     end;
finalization
   if mHandle <> 0 then
     CloseHandle(mHandle);

Könnte mir das vielleicht helfen? Nur wie versende ich dann die Parameter weiter an die bereits geöffnete Instanz?
Wie würdet Ihr das machen ?

Vielen Danke schonmal, frohes Fest + schönen Gruß Chrstioph
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.12.03 01:21 
Du musst verhindern, dass ein ezweite Instanz deines Programmes gestartet wird und wenn dies passiert muss jede weitere Instanz ihre Startparameter an die schon vorhandene senden. Eine Lösung wäre dies mit WM_COPYDATA zu lösen. Such mal hier im Forum, das wurde schon mal besprochen.

Falsche Forum. Hier www.delphipraxis.net...ght=mutex+wmcopydata gibt es die Lösung. Posting vom 2003-08-07, 18:41. Zu beachten auch die Postings von 2003-08-08, 09:47 und 2003-08-08, 10:13.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.12.03 08:59 
Luckie hat folgendes geschrieben:
Such mal hier im Forum, das wurde schon mal besprochen.

Falsche Forum.

Findet man hier aber auch oft genug. Weiß ich, weil ich selbst schon zu dem Thema was gepostet habe.
Takeshi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Di 23.12.03 19:50 
jo thx schonmal :lol:
wird wohl die lösung drinstehn, wenn ichs hab post ichs denn
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.12.03 08:25 
Takeshi hat folgendes geschrieben:
wird wohl die lösung drinstehn, wenn ichs hab post ichs denn

Wozu willst du das noch mal posten? Der Suchlink Suche in: Delphi-Forum, Delphi-Library WM_COPYDATA reicht auch für DF-Besucher vollkommen aus.