Also ich würde versuchen den Code sauber in einer Prozedur zu verpacken.
(Stichwort: Wiederverwendbarkeit und Testbarkeit)
Als Übergabeparameter würde ich das Fensterhandle und ein TBitmap-Objekt übergeben:
procedure MakeWindowScreenshot(hWnd:THWND; bitmap:TBitmap);
Dann würde ich zunächst einmal mit einem Fenster der eigenen Anwendung testen.
Danach würde ich es mit einem fremden Fenster versuchen, dass mit FindWindowByClasses(...) gefunden wurde.
Und ausserdem würde ich eine
Exception werfen, wenn FindWindowByClasses(...) kein gültiges Fensterhandle liefert.