![]() |
dateien in mein programm laden
Hallo, habe einen CPU-schonenden musicplayer geschrieben, und es läuft eigentlich bis auf ein paar kleinigkeiten auch alles einigermassen, jetzt möchte ich aber meine musikdateien mit diesem programm verknüpfen, sodass diese automatisch mit meinem programm gesatartet werden, soweit ich weiss wird dann mein programm mit der zu öffnenden datei als attribut gesatartet, oder? wie kann ich dieses attribut abrufen und wie verhält sich das bei mehreren dateien? danke schonmal
stromer |
Re: dateien in mein programm laden
Also, angenommen du hast eine Datei, mit deinem Programm verknüpft.
Doppelklick auf diese Datei => Dein Prog wird geöffnet Dann steht in Paramstr(0) der Pfad zur "gedoppelklickten" Datei, und du kannst ihn weiter verwenden. |
Re: dateien in mein programm laden
Nein, er steht in ParamStr(1). Aber das mit dem Doppeltklicken funktioniert nur, wenn die Datei auch mit deinem Programm verknüpft ist.
|
Re: dateien in mein programm laden
:oops: Peinlich... :duck:
In Paramstr(0) steht ja der Pfad zur Anwendung... Sorry. :-( |
Re: dateien in mein programm laden
in paramstr(0) steht der pfad zum player, habe das mit den attributen bei einzelnen dateien schon hinbekommen, aber wie schaffe ich es mehrere attribute zu behandeln?
hier ist mein bisheriger code:
Code:
der funktioniert aber leider nicht, wenn ich meine musik mit meinem programm verknüpfe, mehrere dateien markiere und diese dann öffne, dann wird mein programm pro datei einmal geöffnet, und jede datei wird gleichzeitig abgespiel, man kann sich vorstellen dass das bei z.b. einem album ein ganz schönes durcheinander gibt ... danke schonmal
procedure TForm1.FormCreate(Sender: TObject);
var j:integer; begin If (ParamCount>0) and (FileExists(ParamStr(1))) then begin for j := 1 to paramcount do begin timer1.enabled := true; timer2.Enabled := true; timer3.Enabled := true; listbox2.Items.Add(paramstr(j)); end; end; end; stromer |
Re: dateien in mein programm laden
Du musst über ein Mutex oder Semaphore sicherstellen, dass dein Programm nur einmal geöffnet werden kann und dann die Parameter aller weiteren Instanzen an die erste weiterreichen.
![]() |
Re: dateien in mein programm laden
weitere instanzen verhindere ich folgendermaßen:
Delphi-Quellcode:
-bevor diese aber beendet werden, müssten sie ihre attribute aber doch an die erste instanz schicken, wie mache ich das?
InstCheck := CreateSemaphore(nil, 0, 1, 'PROGRAM_NAME');
if ((InstCheck <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then begin CloseHandle(InstCheck); Halt; end; -in deinem kleinen beispielprogramm wird dann mit den empfangenen attributen weitergearbeitet, da ist doch diese zeile entscheident, oder?
Delphi-Quellcode:
und nochmal ein herzliches dankeschön, in 10 min iss weihnachten!
if (Msg.CopyDataStruct.dwData = SecondInstMsgId) and (SecondInstMsgId <> 0) then
ProcessCommandline(Msg.CopyDataStruct.lpData) stromer |
Re: dateien in mein programm laden
Zitat:
also pipes oder DDE oder mailslot oder messages oder tcp/ip oder udp/ip ;) |
Re: dateien in mein programm laden
Nö, ein einfaches WM_COPYDATA reicht aus.
|
Re: dateien in mein programm laden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz