![]() |
Datei per Doppelklick dem bereits geöffneten Programm übergeben
Hallo,
ich lasse nur eine Instanz meiner Anwendung zu, mit folgendem Code:
Code:
Wenn ich eine Datei mit der Endung die meinem Programm zugewiesen ist, doppelklicke öffne ich sie in dem ich ParamStr(x) in der FormShow Routine meiner Anwendung überprüfe und dann die Datei-Öffnen-Routine aufrufe.
Initialization
mHandle:=CreateMutex(nil,True,'Programmname'); if GetLastError=ERROR_ALREADY_EXISTS then Halt; finalization if mHandle<>0 then CloseHandle(mHandle) Bloss wie mache ich es wenn ich auf eine Datei meiner Endung doppelklicke und mein Programm bereits geöffnet ist? Ich müsste for dem "Halt" die ParamStr(x) auslesen und der ersten Instanz meines Programmes übergeben. Ist das ein Fall für SharedMemory oder die COM Schnittstelle oder gibt es auch einen einfacheren / direkteren Weg an den ich jetzt nicht denke? danke schonmal |
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
WM_COPYDATA fällt mir da spontan ein. Beispiele sollten sich im Forum finden lassen.
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
IPC
mail-slots pipes messages named MMF oder unnamed MMF via message (RegisterWindowMessage+SendMessage) uvm. Und mit ![]() Entweder wie in der OH genannt oder garnicht erst ins
Delphi-Quellcode:
reinlaufen.
Application.Run
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Zitat:
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Ich würde das mit GlobalAlloc und einer WM_USER-Nachricht machen. WM_COPYDATA erfordert ein eigenes Fenster, das Dir beim Programmbeginn noch nicht zur Verfügung steht.
Ablauf:
Code:
GlobalAlloc(ausreichende Größe, um den übergebenen Dateipfad darin unterzubringen)
GlobalLock() Pfad in den Speicherbereich übertragen GlobalUnlock() SendMessage(WM_USER+x, Handle aus GlobalAlloc) Verarbeiten im empfangenden Programm: GlobalLock herauskopieren des Inhalts GlobalUnlock PostMessage (z.B: WM_USER+x+1) Return GlobalFree() Beenden |
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Zitat:
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Zitat:
Zitat:
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Auch dein SendMessage braucht ein Window-Handle, genauso wie WM_COPYDATA.
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Zitat:
|
AW: Datei per Doppelklick dem bereits geöffneten Programm übergeben
Von "erforderlich" kann ich im MSDN aber nirgends etwas lesen. Vielmehr verstehe ich das so, dass man hier optional das Fensterhandle des Senders hinterlegen kann. Ich würde es einfach mal mit einer 0 probieren, sollte das nicht klappen, mit HWND_MESSAGE oder so.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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