Einzelnen Beitrag anzeigen

beatles

Registriert seit: 17. Jan 2004
24 Beiträge
 
#14
  Alt 25. Jan 2004, 15:13
Schönen guten Sonntag

Ich möchte jedoch mehr als "Doppelklick öffnet Datei mit meinem Programm".

Soweit wie in diesem Code (von Christian Seehase) angegeben, habe ich es auch geschafft.



Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  if paramcount > 0 then
  begin
    // z.B. übergebenen Datei in ein Memo laden
    // oder was auch sonst mit der Datei geschehen soll.
    Memo1.Lines.LoadFromFile(paramstr(1));
  end;
end;

mein Problem ist es jedoch, bei einem weiteren Klick wird das gleiche Programm noch einmal gestarten und die Datei geladen. das möchte ich gerne verhindern. Die Datei soll mit dem (wenn es bereits gestartet ist) Programm geladen werden. So wie bei dem Windows-Mediaplayer, beim anklicken einer *.wav-Datei. Da wird auch kein neuer Player geöffnet. Ich habe mich schon Tagelang hier im Forum umgeschaut, aber noch nichts gefunden

Ich habe bei http://www.delphi-fundgrube.de/faq03.htm zwar das gefunden: (hier ein Ausschnitt) "Falls eine laufende Instanz eines Programms eine verknüpfte Datei öffnen soll, muß das Programm auf eine Message reagieren:"

Delphi-Quellcode:
type
  TMainForm = class(TForm)
  Private
    procedure NeedFileOpen(var Msg: tMessage); Message wmMainInstanceOpenFile;

[..]

procedure TMainForm.NeedFileOpen(var Msg: tMessage);
var Path : string;
    PC : array[0..MAX_PATH] of Char;
begin
  GlobalGetAtomName(Msg.wParam, PC, MAX_PATH);
  Path := Trim(StrPas(PC));
  Datei_laden(Path); // Den Code zum Laden der Daten ausführen
end;
Leider bekam ich bei Message wmMainInstanceOpenFile; bereits eine Fehlermeldung.

Gibt es ein Lösung?

mfg
Beatles
  Mit Zitat antworten Zitat