escafandra muchas gracias por el aporte, gracias a tu codigo me dio la idea para encontrar una solucion en parte teorica en parte
practica que comento aqui para que le sirva a otros exactamente asi como esta tu codigo sale en negro la imagen cuando
captura el segundo monitor, pero se me ocurrio algo: y si capturo una imagen del "monitor1" pero con las cordenadas del monitor2?
y lo pongo entre comillas pues ya no seria la imagen del monitor1, en una pequeña prueba en la practica funciono
esto:
Código Delphi
[-]
var
W, H: integer;
DC: HDC;
bmp, oldbmp: HBITMAP;
Bitmap: TBitmap;
begin
W:= lprcMonitor.Right - lprcMonitor.Left;
H:= lprcMonitor.Bottom - lprcMonitor.Top;
DC:= CreateCompatibleDC(0);
bmp:= CreateCompatibleBitmap(hdcMonitor, W, H);
oldbmp:= SelectObject(DC, bmp);
BitBlt(DC, 0, 0, W, H, hdcMonitor, W, H, SRCCOPY + $40000000);
SelectObject(DC, oldbmp);
DeleteObject(DC);
Bitmap:= TBitmap.Create;
Bitmap.Handle:= bmp;
Bitmap.SaveToFile(Format('panta%d.bmp', [n]));
inc(n);
Bitmap.Free;
Result:= true;
{$J-}
end;
claro que yo sabia que el monitor 2 esta justo a la derecha del 1 y que tambien tenia la misma resolucion
pero esto se podia resolver con una funcion llamada MonitorFromPoint y le pasamos la resolucion de ancho de nuestro actual
monitor1 +1 como cordenada horizontal para saber si hay un monitor a la derecha y claro 0 en la cordenada vertical, lo mismo
podia ser si el monitor esta a la izquierda pero esta ves le restamos -1 o -5 por si existe algun borde digo yo, si el monitor esta
debajo le pasamos el alto de nuestro +1 como cordenada vertical y 0 horizontal y lo mismo a la inversa si esta arriba, esto es en
parte teoria pero lo llevare a la practica en un codigo completo y si funciona lo pondre aqui pa tados, saludos.