FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Bien me dispuse a probarlo pero me da el siguiente error:
unit1.pas(63,59) Error: Incompatible type for arg no. 3: Got "<address of function(LongWord,LongWord,var RECT,LongInt):Boolean;StdCall>", expected "<procedure variable type of function(LongWord,LongWord,PRECT,LongInt):LongBool;StdCall>" en la funcion @MonitorEnumProc y si la cambio por PRECT me dice: unit1.pas(34,84) Error: Identifier not found "PRECT", otra cosa, porque es el SRCCOPY + $40000000 y no simplemete SRCCOPY? |
#2
|
||||
|
||||
[quote=Segator;470244]Bien me dispuse a probarlo pero me da el siguiente error:
unit1.pas(63,59) Error: Incompatible type for arg no. 3: Got "<address of function(LongWord,LongWord,var RECT,LongInt):Boolean;StdCall>", expected "<procedure variable type of function(LongWord,LongWord,PRECT,LongInt):LongBool;StdCall>" en la funcion @MonitorEnumProc y si la cambio por PRECT me dice: unit1.pas(34,84) Error: Identifier not found "PRECT"[quote] Pues depende de las definiciones del delphi que uses. Yo lo he compilado con delphi7. Realiza los siguientes cambios: PRECT es un Puntero a RECT Código:
type PRECT = ^TRECT; Pasa lprcMonitor como un puntero en lugar de por referencia: Código:
function MonitorEnumProc(hMonitor: THANDLE; hdcMonitor: HDC; lprcMonitor: PRECT; dwData: LPARAM): boolean; stdcall; Saludos. |
#3
|
|||
|
|||
me funciona para el monitor principal pero para el otro me da 'External: SIGFPE' vale aclarar que no estoy usando delphi si no Lazarus + FPC y que dicen que la funcion GetDC(0) esta puesta solo por compativilidad, aunque esto si funciona: var bmp:TBitmap; begin bmp:=TBitmap.Create; bmp.LoadFromDevice(GetDC(0)); bmp.SaveToFile('imagen.bmp'); end;
|
#4
|
||||
|
||||
Hola Segator.
Por favor cuando incluyas código en tu mensaje utiliza TAG's para darle más legibilidad: Saludos y gracias por tu colaboración
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
No me di cuenta que usabas Lazarus. Te paso el código que he compilado en Lazarus pero probado con un solo monitor, no dispongo de configuración con dos minitores:
Espero que te sirva de ayuda. Saludos. Última edición por escafandra fecha: 01-12-2013 a las 19:56:47. |
#6
|
|||
|
|||
Como capturar varias pantallas de forma independiente [Solucionado]
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:
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. Última edición por ecfisa fecha: 04-12-2013 a las 17:36:54. Razón: Corregir etiquetas [DELPHI] en modo WYSIWYG |
#7
|
|||
|
|||
Solucion final.
Disculpen si los enrede un poco en el post de arriba, pero ya logre capturar cada monitor de forma independiente, gracias a escafandra, hice una simplificacion del codigo y otros pequeños cambios y asi es como quedo:
luego pueden saber si hay mas de un monitor disponible con:
y llamar a la funcion asi:
donde x es el numero del monitor al que quieran capturar espero les sirva a todos, saludos. Última edición por ecfisa fecha: 05-12-2013 a las 16:05:22. Razón: Corregir etiquetas [DELPHI] en modo WYSIWYG |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capturar Pantalla = Pantalla negra | DarkDudae | Gráficos | 8 | 27-10-2008 12:29:36 |
Capturar Pantalla | Estuardo18 | Gráficos | 4 | 27-10-2008 12:25:05 |
capturar parte de la pantalla | gabriel3 | Varios | 1 | 21-01-2006 18:09:08 |
Error al capturar la pantalla!! | DarkByte | Gráficos | 7 | 28-07-2005 03:16:33 |
Capturar pantalla | pablo | Varios | 1 | 07-09-2004 20:15:10 |
|