Zapisywanie zrzutu wybranego programu do pliku

Jak wiecie to za pomocą klawisza PrintScreen można robić zrzut całego ekranu, a potem np. wklejać go do Paintbrusha i zapisywać jako bitmapę do pliku. Poniżej przedstawiam kod jak za pomocą kliknięcia przycisku Button1 zapisywać zrzut wybranego programu do pliku, trzeba tylko znać nazwę klasy tego programu, w tym przypadku jest to TAppBuilder, czyli Borland C++ Builder (a dokładniej to jego górna część z paskiem menu i komponentami), oczywiście program ten musi być widoczny, w przeciwnym razie nie ma co zrzucać:

Unit1.cpp

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   HWND BCBHandle = FindWindow("TAppBuilder", NULL);

   if (BCBHandle)
   {
      HDC dc = GetWindowDC(BCBHandle);
      Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas;
      Graphics::TBitmap *BMP = new Graphics::TBitmap;
      ScreenCanvas->Handle = dc;

      TRect rect = ScreenCanvas->ClipRect;
      rect.Right = rect.Right - rect.Left;
      rect.Bottom = rect.Bottom - rect.Top;
      rect.Top = rect.Left = 0;

      BMP->Width = rect.Right;
      BMP->Height= rect.Bottom;
      BMP->Canvas->CopyRect(rect, ScreenCanvas, ScreenCanvas->ClipRect);

      BMP->SaveToFile("c:\\zrzut.bmp");

      delete ScreenCanvas;
      delete BMP;
      ReleaseDC(BCBHandle, dc);
   }
}