Ich hole diesen alten Thread wieder hoch.
Der Code funktioniert, nur habe ich an einer Stelle ein Verständnisproblem.
Delphi-Quellcode:
hMMF := CreateFileMapping($FFFFFFFF,
nil, PAGE_READWRITE
or SEC_COMMIT, 0,
SizeOf(hWnd), FILEMAPPING_NAME);
bHWND := MapViewOfFile(hMMF, FILE_MAP_WRITE, 0, 0, SizeOf(HWND));
bHWND^ := hWnd; <--- hier wird das "Client"
Handle im MMF gespeichert
UnmapViewOfFile(bHWND); <-- hier wird es wieder zerstört ?
GetMem(hWndBuffer, SizeOf(HWND)); <-- und hier wird Speicher reserviert
hWndBuffer^ := hWnd; <-- um das Fenster
Handle zu speichern, welches später bei PostMessage gebraucht wird.
Warum hier das hWnd so behandelt (gespeichert) werden muss glaube ich verstanden zu haben. (Prozesskommunikation)
Nur hier wird der MMF mit UnmapViewOfFile wieder geleert, um danach wieder Speicher zu holen um das
Handle nochmals zu speichern.
In PostMessage wird nur hWndBuffer^ benutzt..