Bezposredniej funkcji do zrzutu okna o nieregularnych ksztaltach to raczej nie ma. Natomiast aby zrzucic caly, badz czesc ekranu wystarcza Ci funkcje (delphi):
var
width, height,x,y: integer;
dc:hDC;
bm:hBitmap;
begin
width := 50; height := 100; //wysokosc i szerokosc zrzutu kawalka ekranu
x=5; y=20; //skad
dc:=CreateComaptibleDC(GetDC(0));
bm:=CreateCompatibleBitmap(GetDC(0),width,height);
BitBlt(dc,0,0,width,height,GetDC(0),x,y,SRCCOPY);
//tutaj mozesz obsluzyc uchwyt bm (bitmapy z rzutem ekranu), np. zapisac do pliku
DeleteDC(dc);
DeleteObject(bm);
end;