AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WM_COPYDATA macht große Probleme
Thema durchsuchen
Ansicht
Themen-Optionen

WM_COPYDATA macht große Probleme

Ein Thema von Mazel · begonnen am 17. Jul 2006 · letzter Beitrag vom 19. Jul 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#11

Re: WM_COPYDATA macht große Probleme

  Alt 18. Jul 2006, 18:28
Hi,

ich weis jetzt genau was du meinst.
Wenn die 2. Instanz startet, prüft diese, ob es das Programm schonmal gestartet ist, wenn ja ermittele ich ähnlich FindFirst - FindNext ein Handle, welches ich unter Wnd abspeichere.

Application.Handle sollte doch das Handle, der aktuellen Instanz (also dieser 2.Instanz) sein. Wenn das gefundene Handle (Wnd) nicht das der 2. Instanz sein sollte überprüfe ich es ob es sich um die 1. Instanz handelt, wenn nicht, bekommt Wnd das nächste Handle.

Du kannst ja gerne dein Code mal posten.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#12

Re: WM_COPYDATA macht große Probleme

  Alt 18. Jul 2006, 19:56
Hi,
...hmm weiss nicht genau ob du mich da richtig verstanden hast oder ob ich dich jetz falsch verstehe.. mir geht es nicht darum ob das Programm 2 mal geöffnet ist oder nicht, sondern darum das du, wemm du das Programm einmal aufrufst ein Handle für deine Application und eines für deine Form hast...
Also nochmal als Quelltext ausgedrückt:

application.handle und form1.handle innerhalb des selben Programms, dass auch nur eine Form hat, waren bei mir unterschiedliche Werte und man muss an Form1 senden wenn die Empfangsfunktion unter Form1 deklariert ist...

ansonsten mein Code der bei mir funktioniert:

Zum Senden:
Delphi-Quellcode:
procedure TForm1.SendMainApp(S:String);
var
   copyDataStruct : TCopyDataStruct;
begin
   copyDataStruct.dwData := 0; //use it to identify the message contents
   copyDataStruct.cbData := 1 + Length(s);
   copyDataStruct.lpData := PChar(s);
   sendmessage(PH,WM_COPYDATA,application.handle,Integer(@CopyDataStruct)); //PH ist das handle der Form an die ich Sende (form1.handle)
end;
Zum empfangen:
procedure WMCopyData(var Msg :TWMCopyData); message WM_COPYDATA;
Delphi-Quellcode:
procedure TForm1.WMCOPYDATA(var Msg: TWMCopyData);
var s,s1:string;
    i:integer;
begin
  s := PChar(Msg.CopyDataStruct.lpData) ;
  //msg.Result := 2006;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#13

Re: WM_COPYDATA macht große Probleme

  Alt 18. Jul 2006, 22:15
Mhm, ich habe dich schon verstanden. Das sind zwei unterschiedliche Werte.

Wie ermittelts du das Handle der Form1 (PH)?

Ich muss das Handle ermitteln da ich die Message an die 1. Instanz senden muss von der 2. Instanz aus.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#14

Re: WM_COPYDATA macht große Probleme

  Alt 19. Jul 2006, 09:42
ich habs da recht einfach gehabt, weil ich von einer dll aus sende und das handle von form1 einfach beim laden mitschicke.... aber hier haben die eine Prozdur mit der man das Handle angeblich bekommen soll, habs allerdings nicht selber getestet. Ansonsten kannste ja auchmal ausprobieren die Empfangsfunktion nicht unter Form1 zu deklarieren evtl hilft das dann ja schon  procedure WMCOPYDATA(var Msg: TWMCopyData); Hoffe das hilft dir weiter...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:45 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