Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2005
walrus walrus is offline
Miembro
 
Registrado: ago 2004
Posts: 40
Poder: 0
walrus Va por buen camino
Capturar pantalla desde un servicio del windows

Hola, estoy haciendo un servicio que debería capturarme la pantalla y guardar la captura como un bmp en el disco. Sin embargo, la rutina que empleo para la captura me funciona en una aplicación normal, pero parece que en un servicio windows no me funciona.

La rútina que empleo es la siguiente:

Código Delphi [-]
procedure ScreenShot(x : integer; y : integer; Width : integer; Height : integer; bm : TBitMap);
var
  dc: HDC; lpPal : PLOGPALETTE;
begin
  if ((Width = 0) OR (Height = 0)) then exit;
  bm.Width := Width;
  bm.Height := Height;
  dc := GetDc(0);
  if (dc = 0) then exit;
  if (GetDeviceCaps(dc, RASTERCAPS) AND
      RC_PALETTE = RC_PALETTE) then
      begin
        GetMem(lpPal, sizeof(TLOGPALETTE) + (255 * sizeof(TPALETTEENTRY)));
        FillChar(lpPal^, sizeof(TLOGPALETTE) + (255 * sizeof(TPALETTEENTRY)), #0);
        lpPal^.palVersion := $300;
        lpPal^.palNumEntries :=
          GetSystemPaletteEntries(dc,0,256,lpPal^.palPalEntry);
        if (lpPal^.PalNumEntries <> 0) then
            begin
            bm.Palette := CreatePalette(lpPal^);
            end;
        FreeMem(lpPal, sizeof(TLOGPALETTE) + (255 * sizeof(TPALETTEENTRY)));
      end;
BitBlt(bm.Canvas.Handle,0,0,Width,Height,Dc,x,y,SRCCOPY);
ReleaseDc(0, dc);
end;

La rútina la encontré en:

http://www.delphipages.com/tips/copyview.cfm?ID=75

La rutina se lanza desde el evento OnExecute del TService.

También he probado con la rútina de TrucoMania, pero nada.

Por esto, sospecho que desde un servicio no se puede capturar la pantalla, pero me parece raro. ¿Qué pensaís?

Muchas gracias por leerme.

Saludos.
Responder Con Cita
  #2  
Antiguo 17-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
El tema es que cuando capturas la pantalla aun no se ha creado ningun escritorio de usuario.
Por ejemplo, yo tengo una aplicación que hice, que en una plataforma NT puede registrase como servicio, y entre tantas cosas, sirve para capturar la pantalla y listar las ventanas de la terminal en forma remota. Prueba los efectos de una terminal sin "loguearse" y antes de "loguearse": http://www.delphi.com.ar/apps/PMachine2Bin.rar

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 17-08-2005
walrus walrus is offline
Miembro
 
Registrado: ago 2004
Posts: 40
Poder: 0
walrus Va por buen camino
Gracias Federico, aunque la solución la encontré en el hílo:

http://www.clubdelphi.com/foros/show...light=tservice

Y es que me faltaba poner la propiedad Interactive del TService a True.

Os pido disculpas por no haber buscado antes en este fantástico foro.

De todos modos, le voy a echar un vistazo a lo que me comentas, es posible que me resulte útil. Gracias de nuevo.

Saludos.
Responder Con Cita
  #4  
Antiguo 17-08-2005
walrus walrus is offline
Miembro
 
Registrado: ago 2004
Posts: 40
Poder: 0
walrus Va por buen camino
Estupenda tu aplicación. Mi intención es parecida, pero no tan ambiciosa. De momento mi proyecto está en pañales respecto a lo tuyo.

De paso, reportarte que el cliente da un error al conectarse a un servidor w2000as. En cambio, funciona perfectamente si se instala en un xp (el servicio). Tampoco se ven las imagenes de los botones, pero te felicito porque la aplicación es muy potente (me he sorprendido de la cantidad de posibilidades que ofrece, es muy completo).

Saludos.
Responder Con Cita
  #5  
Antiguo 17-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por walrus
De paso, reportarte que el cliente da un error al conectarse a un servidor w2000as. En cambio, funciona perfectamente si se instala en un xp (el servicio). Tampoco se ven las imagenes de los botones...
Yo lo uso en W2k y XP... podrá ser la vesión que subí, no lo recuerdo.
Por otro lado, nunca me tome el tiempo de ponerle las imágenes a los botones ...

Gracias por los comentarios!
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


La franja horaria es GMT +2. Ahora son las 12:04:27.


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