Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dateien in mein programm laden (https://www.delphipraxis.net/36708-dateien-mein-programm-laden.html)

stromer 23. Dez 2004 21:25


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

Ultimator 23. Dez 2004 21:43

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.

Luckie 23. Dez 2004 21:51

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.

Ultimator 23. Dez 2004 21:53

Re: dateien in mein programm laden
 
:oops: Peinlich... :duck:

In Paramstr(0) steht ja der Pfad zur Anwendung...

Sorry. :-(

stromer 23. Dez 2004 21:58

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

stromer

Luckie 23. Dez 2004 22:31

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.

http://www.luckie-online.de/Delphi/Importe/Nico/ -> oneinst.zip

stromer 23. Dez 2004 22:52

Re: dateien in mein programm laden
 
weitere instanzen verhindere ich folgendermaßen:
Delphi-Quellcode:
InstCheck := CreateSemaphore(nil, 0, 1, 'PROGRAM_NAME');
if ((InstCheck <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle(InstCheck);
Halt;
end;
-bevor diese aber beendet werden, müssten sie ihre attribute aber doch an die erste instanz schicken, wie mache ich das?

-in deinem kleinen beispielprogramm wird dann mit den empfangenen attributen weitergearbeitet,
da ist doch diese zeile entscheident, oder?
Delphi-Quellcode:
if (Msg.CopyDataStruct.dwData = SecondInstMsgId) and (SecondInstMsgId <> 0) then
    ProcessCommandline(Msg.CopyDataStruct.lpData)
und nochmal ein herzliches dankeschön, in 10 min iss weihnachten!

stromer

supermuckl 23. Dez 2004 22:56

Re: dateien in mein programm laden
 
Zitat:

-bevor diese aber beendet werden, müssten sie ihre attribute aber doch an die erste instanz schicken, wie mache ich das?
mit IPC (interprocess communication)

also pipes oder DDE oder mailslot oder messages oder tcp/ip oder udp/ip ;)

Luckie 23. Dez 2004 23:17

Re: dateien in mein programm laden
 
Nö, ein einfaches WM_COPYDATA reicht aus.

supermuckl 23. Dez 2004 23:18

Re: dateien in mein programm laden
 
Zitat:

also pipes oder DDE oder mailslot oder messages oder tcp/ip oder udp/ip


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