Zuerst mal das:
ret := SendMessage(wnd, LVM_FINDITEM, -1, Integer( ->@<- pAddr)) // @ weglassen;
Lass mal hier das @ weg, du willst ja die Adresse übergeben, die in pAddr gespeichert ist, nicht die Adresse der
Variablen pAddr.
Zweitens hast Du zwar im fremden Prozess den Speicher für LV_FINDINFO reserviert, aber noch nicht belegt. Du musst den entsprechenden Speicherbereich aus Deinem Prozess noch in den fremden Prozess hinüberkopieren, denn sonst steht dort vor dem Funktionsaufruf nur Müll. Stichwort
WriteProcessMemory.
Gruß, teebee