elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [SOURCE-CODE] DWM Thumbnail User Control
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE-CODE] DWM Thumbnail User Control  (Leído 546 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
[SOURCE-CODE] DWM Thumbnail User Control
« en: 12 Agosto 2018, 10:31 »

DWM Thumbnail User Control



Les traigo un original control de usuario que he extraído del framework comercial ElektroKit para programadores de .NET (si desean comprarlo lo pueden encontrar en mi firma de usuario. ¡Gracias!).
El nombre de este control es ElektroDwmThumbnail y sirve para crear una ventana de previsualización en tiempo real de la ventana que queramos, un espejo.
Si no lo han entendido bien entonces miren el siguiente video y no les quedará duda alguna de su funcionalidad...




Ejemplo de uso en C#:
Código
  1. // Register a DWM thumbnail for the main window of Notepad process.
  2. Process pr = Process.GetProcessesByName("Notepad").SingleOrDefault();
  3. IntPtr? hWnd = pr?.MainWindowHandle;
  4. ElektroDwmThumbnail1.RegisterThumbnail(hWnd);
  5.  
  6. // Unregister the DWM thumbnail.
  7. ElektroDwmThumbnail1.UnregisterThumbnail();

Ejemplo de uso en VB.NET:
Código
  1. ' Register a DWM thumbnail for the main window of Notepad process.
  2. Dim pr As Process = Process.GetProcessesByName("Notepad").SingleOrDefault()
  3. Dim hWnd As IntPtr? = pr?.MainWindowHandle
  4. ElektroDwmThumbnail1.RegisterThumbnail(hWnd)
  5.  
  6. ' Unregister the DWM thumbnail.
  7. ElektroDwmThumbnail1.UnregisterThumbnail()



El código fuente incluye el control de usuario, documentación .NET y una sencilla aplicación de muestra para probar su funcionamiento.
Además también incluye miembros originales y reutilizables del código fuente del framework comercial ElektroKit...
...una mínima parte que fue necesaria añadir para el desarrollo y distribución de este control de usuario.

Pueden descargarlo aquí:



Espero que les sirva y les agrade el aporte. :)
¡Saludos!.


« Última modificación: 13 Agosto 2018, 00:54 por Eleкtro » En línea


EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.393



Ver Perfil
Re: [SOURCE-CODE] DWM Thumbnail User Control
« Respuesta #1 en: 12 Agosto 2018, 17:31 »

Saludos,

- Tuve que ver unas tres veces el vídeo para entenderlo bien, jeje mal ejemplo con el MPC como lo uso bastante no vi nada raro o nuevo ya que el mismo MPC hace todo eso por sí solo XD.

-- También cuando leí espejo, lo primero que se me vino a la mente es pues eso una imagen espejada (volteada horizontalmente) XD y pensé: ¿para qué  :¬¬ voy necesitar algo así?  :xD

- Mmm... podría ser útil para hacer retransmisiones, comentarios, tutoriales, etc.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: [SOURCE-CODE] DWM Thumbnail User Control
« Respuesta #2 en: 12 Agosto 2018, 23:54 »

- Tuve que ver unas tres veces el vídeo para entenderlo bien, jeje mal ejemplo con el MPC como lo uso bastante no vi nada raro o nuevo ya que el mismo MPC hace todo eso por sí solo XD.

-- También cuando leí espejo, lo primero que se me vino a la mente es pues eso una imagen espejada (volteada horizontalmente) XD y pensé: ¿para qué  :¬¬ voy necesitar algo así?  :xD

Lamento si el ejemplo mostrado en el video no ha sido lo suficientemente auto-explicativo y más bien pudo resultar confuso, yo asumí que se entendería. Tampoco me expresé demasiado bien con lo de "espejo", es cierto. Ya te diste cuenta de que no es ese tipo de espejo, ni tampoco es una imagen estática.

Lo explicaré de nuevo con otras palabras: este control de usuario nos permite crear una ventana de previsualización en tiempo real de la ventana que queramos (siempre que la ventana esté visible), en Inglés se suele utilizar la palabra mirror (espejo) para definir esto. Es el mismo tipo de espejo/previsualización que podemos ver si colocamos el puntero del ratón sobre un icono de la barra de tareas del escritorio, donde nos aparecerá una miniatura de previsualización de la ventana en cuestión.

Este control internamente hace uso de la API DWM de Microsoft Windows: https://docs.microsoft.com/en-us/windows/desktop/dwm/dwm-overview por ende, la composición DWM debe estar activada para que el control funcione en versiones anteriores a Windows 10 (en Windows 10 no se puede desactivar DWM).

El objetivo principal que tuve para iniciar el desarrollo de este control fue tratar de lograr proveer un uso de lo más sencillo (y abstracto) de las funciones nativas de la API de DWM en lo relacionado a la creación de miniaturas de previsualización de ventanas, que aunque por definición se denomine "miniatura" no se debe caer en el error de creer que dicha miniatura pierda calidad, pues es una miniatura a tamaño real de la ventana que estemos reflejando/previsualizando...

La idea de distribuirlo en forma de control es por que esto le otorga un enfoque RAD (Rapid Application Development) a su aplicación, pues aparte de permitir su creación y colocación en tiempo de diseño a través del diseñador de Forms simplemente con arrastrar y soltar, poder hacer copias del control, alinear el control, etcétera, el uso de un control es muy intuitivo, el tamaño se asigna con la propiedad Control.Size, la posición con la propiedad Control.Location, su visibilidad con Control.Visible, etc, todos sabemos o damos por hecho esas cosas al usar un control (claro que conseguir que la miniatura se pueda manejar usando las propiedades base de un control conlleva cierto trabajo detrás por mi parte), y el resto de parámetros importantes se asignan mediante estas propiedades adicionales que le añadí al control:





- Mmm... podría ser útil para hacer retransmisiones, comentarios, tutoriales, etc.

El escenario ideal para aplicar este control sería para satisfacer cualquier necesidad que implique mostrar de forma programática una previsualización en tiempo real de una ventana, por poner un ejemplo: añadir miniaturas de previsualización de máquinas virtuales...





Saludos!
« Última modificación: 13 Agosto 2018, 09:49 por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines