Sendmessage kommt nicht an

Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Sendmessage kommt nicht an

Beitrag von malabarista »

Ich versuche aus einer eigenen DLL mittels Sendmessage eine Nachricht an das Hauptprogramm zu senden.

Code: Alles auswählen

 
       SendMessage(hApp, WM_USER + 1, 65, 0);
 

Die kommt aber im Hauptprogramm nicht an.

Code: Alles auswählen

 
...
  public
    { public declarations }
  procedure DllMessage(var Msg: TMessage); message WM_USER + 1;
....
 


Vermutlich hängt dies mit der Variablen hApp zusammen.
Dieses Handle übergebe ich beim Start des Hauptprogramms an die DLL beim Aufruf:

Code: Alles auswählen

 
  starth(memo.Handle, Handle);
 

memo.Handle funktioniert: das ist das Handle eines Memo-Feldes auf dem Hauptformular und aus der DLL kann ich direkt dorthinein schreiben.
Aber die Variable Handle scheint falsch zu sein. Wie müsste sie richtig lauten ?

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Sendmessage kommt nicht an

Beitrag von marcov »

Es soll die Formhandle sein der den Handler hat.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Sendmessage kommt nicht an

Beitrag von mschnell »

malabarista hat geschrieben:Ich versuche aus einer eigenen DLL mittels Sendmessage eine Nachricht an das Hauptprogramm zu senden.

Warum ?
Innerhalb eines Programms (die DLL ist ja nur dynamisch angelinkt, aber zur Laufzeit Teil des Programms) gibt es da Lazarus/Delphi-interne Möglichkeiten statt Windows-Spezialitäten zu benutzen.

z.B. um den MainThrfead zu signalisieren: TThread.Queue.

-Michael

Antworten