Einzelnen Beitrag anzeigen

grl

Registriert seit: 5. Feb 2007
174 Beiträge
 
FreePascal / Lazarus
 
#6

Re: WM_COPYDATA zwischen Delphi- und Freepascalprogramm

  Alt 13. Feb 2010, 10:03
Hallo DelphiFan!

Wie Astat schon geschrieben hat, ist WM_COPYDATA aus kompatibilitätsgründen nicht implementiert.

Solltest du es dir selbst einbauen wollen (dafür musst du natürlich die LCL neu kompilieren!) ist es wie folgt zu machen:

In der Datei lcl\interfaces\win32\win32callback.inc werden in der Funktion WindowProc alle dort nicht angeführten Messages "geschluckt" und nicht an den Window-eigenen Messagehandler weitergeleitet.

Das kann man beheben in dem man in dieser Funktion die WM_COPYDATA nachrüstet.
Such in dieser Funktion nach dem Handling für WM_ACTIVATE und füge für WM_COPYDATA folgendes ein:

Delphi-Quellcode:
    WM_COPYDATA: //passthrough of WM_COPYDATA messages for Delphi-Compatibility
    begin
      LMessage.Msg := Msg;
      LMessage.WParam := WParam;
      LMessage.LParam := LParam;
      WinProcess := false;
    end;
Damit funktioniert (das auch von mir sehr exzessiv verwendete) WM_COPYDATA genau gleich wie unter Delphi.

Gruß
GRL
  Mit Zitat antworten Zitat