Ich würde die Funktion DesktopScreenShot erstmal in ein eigenes
Unit verfrachten, nur mit dem Minimum an Abhängigkeiten,
um das Ganze im ersten Schritt etwas zu modularisieren.
Dieses sollte dann in deinem
Unit als Uses eingebunden eigentlich arbeiten können oder vielleicht einen besseren Fehlerhinweis liefern.