AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dateien in mein programm laden

Ein Thema von stromer · begonnen am 23. Dez 2004 · letzter Beitrag vom 23. Dez 2004
Antwort Antwort
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#1

dateien in mein programm laden

  Alt 23. Dez 2004, 21:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 21:43
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.
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 21:51
Nein, er steht in ParamStr(1). Aber das mit dem Doppeltklicken funktioniert nur, wenn die Datei auch mit deinem Programm verknüpft ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 21:53
Peinlich...

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

Sorry.
Julian J. Pracht
  Mit Zitat antworten Zitat
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#5

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 21:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 22:31
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
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#7

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 22:52
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
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#8

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 22:56
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
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 23:17
Nö, ein einfaches WM_COPYDATA reicht aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#10

Re: dateien in mein programm laden

  Alt 23. Dez 2004, 23:18
Zitat:
also pipes oder DDE oder mailslot oder messages oder tcp/ip oder udp/ip
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz