Davon ging ich aus. Aber aus irgendeinem Grund scheint das Objekt nicht mehr zu existieren. Daher meine Befürchtung, dass genau der Speicherbereich aufgeräumt oder überschrieben wurde.
Deine Variable, auf die du zugreifen wolltest, war ja wirklich weg, also stimmte der Fehler schon.
Bei PostMessage müßte man eventuell nochaufpassen, daß der MessageQueue nicht überläuft.
Sind zuviele unverarbeitete Messages vorhanden, dann wird deine Message nicht eingetragen und keiner gibt mehr das Objekt frei.
Delphi-Quellcode:
if not PostMessage(..., LPARAM(x)) then begin
x.Free;
// und eventuell noch eine Fehlermeldung
end;
PS: Irgendein "Idiot" hat beschlossen, daß Integer nicht mehr mitwächst, also unter 64 Bit bleibt das Ding 32 Bit klein.
Also nimm' lieber den direkten Typen für den lParam-Parameter.