Необходимо доработать функцию
В проекте
https://www.codeproject.com/Articles/1114240/Desktop-Duplication-API-in-Delphi
есть модуль для получения скрина экрана методом DesktopDuplication API:
Execute.DesktopDuplicationAPI.pas (приложен)
В нем в процедуре DrawFrame при каждом ее вызове в переменную Bitmap пишется весь фрейм. Необходимо доработать так, чтобы первый раз писался весь фрейм, а каждый последующий только изменения из MoveRects + DirtyRects. После отрисовки нужна структура, в которой будут все измененные прямоугольники в координатах Bitmap.
Пример можно вытащить из этого модуля:
https://softltd.wordpress.com/2016/07/25/desktop-duplication-api-in-delphi/
Там это реализовано через DIB.