Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Dateien bei laufendem Programm in Liste einfügen (https://www.delphipraxis.net/71340-dateien-bei-laufendem-programm-liste-einfuegen.html)

Cylence 13. Jun 2006 14:44


Dateien bei laufendem Programm in Liste einfügen
 
Hi,

ich habe die Dateiendung mp3 mit einem von mir programmiertem Player verknüpft, wenn der Player nicht läuft, ist das auch kein problem, doppelklick auf die datei, und schon startet mein Player mit dem angeklicktem Lied, ich checke beim Oncreate ob Paramstr mehr als 0 ist, und wenn ja, dann füge ich diese meiner Playliste hinzu...

Delphi-Quellcode:
 If (ParamCount>0) and
    (FileExists(ParamStr(1))) then begin
    Loaded1 := False;
      While Loaded1 = False do begin
        if Paramstr(XYZ) = '' then begin
           Loaded1 := True;                        //Dateien beim Klick in Explorer hinzufügen
        end
        else begin
           LoadedFiles.Add(ParamStr(XYZ));
           XYZ := XYZ +1;
        end;
      end;
das funtioniert ohne Probleme...

aber wenn das Programm schon läuft, wie mach ich das dann? Da das Programm dann ja schon läuft, wird nur nochmals das Programm gestartet und sofort wieder geschlossen, weil ich nicht möchte, das das Programm 2 mal gestartet werden kann...
--------------------------------
so hab ich das gemacht:
Delphi-Quellcode:
unit not2times;

interface

implementation

uses windows,Dialogs,sysutils;

var mHandle: THandle;

Initialization
  mHandle := CreateMutex(nil,True,'SidebarXPV');
  if GetLastError = ERROR_ALREADY_EXISTS then begin
    {showMessage('Anwendung läuft bereits!!!!!');}
    Halt;
  end;

finalization
  if mHandle <> 0 then
    CloseHandle(mHandle)
end.
-----------------------------------

also wie kann man realisieren, das bei laufendem Programm angeklickte Lieder im Explorer zur Playliste hinzugefügt werden??? Wär echt super wenn mir jemand helfen könnte, selbst mein Chef hat keine Ahnung wie man das macht... und ich bin Lehrling...

Hope to hear from U

Danke schonmal im Vorraus!!!!!

tom

wer sich meinen Player...oder eher ne Sidebar mit Player anschaun will... es gibt hier schon die BETA Version:

http://mitglied.lycos.de/cylence666/...ncesidebar.exe

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

SirThornberry 13. Jun 2006 14:52

Re: Dateien bei laufendem Programm in Liste einfügen
 
du musst von dem neu gestarten Programm das bereits laufende benachrichtigen. So kannst du zum Beispile mit wm_copydata informationen an ein anderes Fenster schicken (beispiele dazu gibts genug per suche)

NicoDE 13. Jun 2006 14:53

Re: Dateien bei laufendem Programm in Liste einfügen
 
Reichlich antik, aber könnte Ideen liefern:
http://www.michael-puff.de/Developer...co/oneinst.zip

himitsu 13. Jun 2006 14:53

Re: Dateien bei laufendem Programm in Liste einfügen
 
Such mal nach "Doppelstart verhindern" und/oder "Doppelstart verhindern mit Parameterübergabe" (oder so ähnlich).


Du mußt einfach nur prüfen, ob dein Programm schon läuft und wenn dem so ist, schickst du ihm einenNachricht mit den Dateinamen und beendest das (neue) Programm wieder.

Cylence 13. Jun 2006 15:11

Re: Dateien bei laufendem Programm in Liste einfügen
 
Hi,

wow mächtig schnell seid Ihr!!! Danke euch echt!!!

ich denke mit dem wm_copydata könnte das wohl klappen. Allerdings wusste ich noch nicht das es sowas überhaupt gibt.. naja die Erfahrung fehlt halt noch..... *g* Aber hört sich logisch an für mich :-)

ich muss also von der Unit die Überprüft ob das Ding schon läuft, einfach auch die parameter auslesen, und dann als Message quasi an die bereits laufende Instanz senden, und diese muss dann darauf reagieren und die Parameter nach Musik oder Videofiles durch checken und dann in die Playliste hinzufügen...ok gut aber wie? Hat einer ein Code Beispiel oder so? Ich hab leider kein Internet daheim, aber schaff dauernd daheim, bin nur beim Arbeiten online... Und ich weiß im moment nicht, wie ich dann darauf reagiere im laufendem Programm, muss ich einen Timer einbauen, der dauernd schaut ob was gesendet wurde, oder wie? So ähnlich wie WM_Query_endsession denk ich mal?? Ausserdem...sendet er das dann nicht an sich slebst??? Weil das handle, an das ich dann senden will, heisst ja genauso wie das laufende, das wieder geschlossen werden soll.....

Aber so oder so DANKE ICH EUCH!!!!!!!!!!!!!!!! Echt perfekt!!

tom

Cylence 19. Jun 2006 09:46

Re: Dateien bei laufendem Programm in Liste einfügen
 
Hi,

also so ganz klappts noch nich, ich hab das nun so gmeacht, mit der Komponente OneInstance und bei Onshow dies:

XYZ := 0;
If (ParamCount>0) and
(FileExists(ParamStr(1))) then begin
While XYZ < (ParamCount -1) do begin
LoadedFiles.Add(ParamStr(XYZ));
XYZ := XYZ +1;
Loaded1 := True;
end;
end;

if Loaded1 = True then begin
Form8.JvPlayList1.AddItems(LoadedFiles); //wenn Programm mit Parametern gestartet wurde...
end;


da startet dann das Prog zwar, aber übernimmt keinen der Paramstr in die Playliste...

und bei OneInstance habe ich ONSwitch dies eingebaut:



procedure TForm1.OneInstance1Switch(Parameters: TStrings);
begin
Form8.JvPlaylist1.AddItems(Parameters);
end;

und das sollte doch eigentlich auch stimmen, oder nicht???

Hoe to hear from you!!

Thanx

tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 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