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:
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:
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