Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wie funktioniert Getmessage (https://www.delphipraxis.net/50824-wie-funktioniert-getmessage.html)

steppo 1. Aug 2005 15:15


Wie funktioniert Getmessage
 
Hi Leute,

ich weiss, dass dieses Thema schon des öfteren angesprochen wurde.
Aber leider verstehe ich Beispiele in diesem Forum nicht.

In meinem Programm markiere ich zwei Dateien und öffne sie über das Kontexmenü. Es handelt sich dabei um zwei *.Tif - Dateien. Diese beiden Tif - Dateien möchte ich nun nebeneinander angezeigt bekommen. Das Programm wird normalerweise bei zwei markierten Dateien zweimal ausgeführt. Daher habe ich

Delphi-Quellcode:
initialization
  hnd := CreateMutex(nil, True, 'Project1.exe');
  if GetLastError = ERROR_ALREADY_EXISTS then Halt;

  finalization
  if hnd <> 0 then
    CloseHandle(hnd);

end.
diese Abfrage hinzugefügt.

Das Programm wird nur einmal gestartet und die erste Tif - Datei auch angezeigt.

Da ich aber die Zweite Tif - Datei nun auch auf meiner Form neben der ersten anzeigen möchte, muß ich mir wohl den Parameter (Pfad) von der zweiten Instanz holen, richtig?

Genau da hapert es.

Wie bekomme ich den Parameter aus der zweiten Instanz in die erste Instanz?

SirThornberry 1. Aug 2005 15:21

Re: Wie funktioniert Getmessage
 
du müsst mit der bereits vorhanden Instanz kommunizieren bevor du die zweite abschießt. Üblicherweise holt man sich das Handle der bereits laufenden Anwendung und übermittelt dann die Daten mittels wm_copydata oder mit memorymapped files

steppo 1. Aug 2005 15:35

Re: Wie funktioniert Getmessage
 
das Handel der Laufenden (ersten Instanz) habe ich doch.

das ist doch hnd der CreateMutex aus obigem Quelltext, oder?

SirThornberry 1. Aug 2005 21:03

Re: Wie funktioniert Getmessage
 
nein! CreateMutex liefert dir das Mutex-Handle mit dem du anschließend per ReleaseMutex oder ähnlich den Mutext auch wieder freigeben kannst (vermutlich hast du den teil weggelassen da bei beenden des Programmes das automatisch freigegeben wird)

Olli 2. Aug 2005 08:57

Re: Wie funktioniert Getmessage
 
MSDN-Library durchsuchenOpenMutex() wäre hier angesagt.

(Nur als Ergänzung zu SirThornberry's Erklärung)


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