Ver Mensaje Individual
  #5  
Antiguo 27-08-2013
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
La forma en que lo estás haciendo es muy básica. Lamentablemente si la cámara no ofrece una API es muy díficil hacerlo de otra manera.

Windows normalmente no pinta las ventanas o regiones de venta que no son visibles al usuario. Esto es para ahorrar recursos. Es por eso que no puedes obtener la imagen si la ventana no está activa.

Existen varias alternativas que puedes probar. La más fácil es enviar el mensaje WM_PAINT al control del explorador con el handle de tu BMO dónde quieres la imágen. Pero esto no está garantizado que funcione. Depende de la implementación interna del mensaje WM_PAINT.

Otra alternativa es utilizar la API de Desktop Window Manager (DWM). Pero la solución solo funciona en Windows Vista y posterior cre que necesitas Aero activado. http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Una solución más extraña y no estoy completamente seguro si funciona es utilizar los escritorios virtuales de Windows. Muchos desarrolladores desconocen que Windows ofrece escritorios virtuales. No tan potentes como los ofrecidos en los entornos Linux. Pero pueden ser suficientes para que obtengas una solución.

Lamentablemente los escritorios virtuales tienen muchas limitaciones de seguridad. No recuerdo todos los detalles porque fue hace un buen tiempo que trabajé con ellos.

En resumen, has la siguiente prueba.
Crea un escritorio virtual http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Crea tu venta o envíala al nuevo escritorio virtual. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Talvez necesites crear dos ejectuables para implementar SetThreadDesktop. El segundo ejecutable se creará en el segundo escritorio, tomará una el ScreenShot y lo guardará.
Al final, no te olvides de cerrar el escritorio virtual. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita