Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Sreenshoot no visible

Estimados, nose donde agregar esta consulta, espero que este bien aca.

Necesito capturar la un screenshot de una camara IP, el fabricante de esta me entrega el comando necesario para correrlo como un http.
Para este agregue un TwebBrowser en un form que se cargue maximizado, y le cargo el comando para obtener el screenshot.
Luego ejecuto el siguiente procedimiento para capturar el contenido del navegador y guardarlo en un archivo.

Código Delphi [-]
var
  DC : HDC;
  bmp: TBitmap;
begin
try
    dc := GetWindowDC(WebBrowser1.Handle);
    bmp := TBitmap.Create;
    bmp.Width := WebBrowser1.Width;
    bmp.Height := WebBrowser1.Height;
    BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, DC, 0, 0, SRCCOPY);
    bmp.SaveToFile('c:\porteria\porteria.bmp');

finally

    bmp.Free;
    ReleaseDC(WebBrowser1.Handle, DC);
  end;
end;

El problema es que para que funcione es necesario visualizar el navegador, y me gustaria que esto lo hiciera en segundo plano.

Se podrá obtern un screeshot de un TwabBrowser (u otro componente), sin tener que estar visulizandolo?

Espero se entienda.
Gracias.
Responder Con Cita
  #2  
Antiguo 20-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hay varios hilos que tratan ese tema, sobre todo hay uno en particular, muy amplio, pero no lo encuentro
Mira los enlaces del final de esta página, a ver si te lleva a alguno de ellos.
O prueba con las búsquedas.
Responder Con Cita
  #3  
Antiguo 20-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
No hay caso con este tema.

Si bien logro capturar la imagen que necesito, por medio del código expuesto, es necesario que me muestre obligadamente el form que contiene el TWebBrowser, y esto confunde de al usuario.

No es posible, abrir un formulario con el TWebBrowser, cargar la página y luego capturar el contenido de este en una imagen, pero sin que se visualice, que el usuario nunca se entere de esto??

Espero me puedan ayudar.
Responder Con Cita
  #4  
Antiguo 21-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Alguien conoce algún componente aunque sea de pago, que me capture un snapshoot de una camara IP.
Yo he probado con uno de la empresa visioforge, pero el componente hace que se pegue la aplicación, alguien conoce alguien otro?

Idealmente que pueda conectarse y visualizar lo que esta enviado la camara, y cuando lo desee me entregue una imagen.

Gracias
Responder Con Cita
  #5  
Antiguo 27-08-2013
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formulario siempre visible juanchi Varios 4 02-11-2011 16:54:54
Tabsheet visible Paulao Varios 3 13-04-2009 15:36:19
Propiedad Visible en Pagecontrol JF Sebastian OOP 2 03-11-2007 13:31:21
no visible componente de imagen kapullok_2006 Gráficos 0 07-06-2007 11:08:30
Visible := true ramonibk Varios 5 15-07-2004 12:57:11


La franja horaria es GMT +2. Ahora son las 07:34:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi