Crée une relation de miniature Desktop Window Manager (DWM) entre une fenêtre source et une fenêtre destination
#include <WinAPIGdi.au3>
_WinAPI_DwmRegisterThumbnail ( $hDestination, $hSource )
| $hDestination | Handle de la fenêtre qui utilisera la miniature du DWM. |
| $hSource | Handle de la fenêtre à utiliser comme source de miniature. |
| Succès: | Retourne le handle qui représente l'inscription de la miniature DWM. |
| Échec: | Retourne 0 et définit @error <> 0, @extended contient le code d'erreur HRESULT. |
La fenêtre désignée par $hDestination doit être la fenêtre du bureau lui-même ou la fenêtre détenue par le processus qui appelle _WinAPI_DwmRegisterThumbnail().
Cette fonction nécessite Windows Vista ou une version supérieure.
Consultez DwmRegisterThumbnail dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <WinAPIGdi.au3> #include <WinAPIMisc.au3> If Not _WinAPI_DwmIsCompositionEnabled() Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Nécessite Windows Vista ou une version supérieure avec le thème Aero installé.') Exit EndIf Run(@SystemDir & '\calc.exe') Local $hWnd = WinWaitActive("[CLASS:CalcFrame]", '', 3) If Not $hWnd Then Exit EndIf ; Crée une GUI Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 400, 400) GUISetBkColor(0) ; Crée l'effet "feuille de verre" pour la totalité de la fenêtre. Vous devez appeler cette fonction chaque fois que la composition DWM est activée. _WinAPI_DwmExtendFrameIntoClientArea($hForm) ; Crée une relation de miniature DWM (2:1) Local $hThumbnail = _WinAPI_DwmRegisterThumbnail($hForm, $hWnd) Local $tSIZE = _WinAPI_DwmQueryThumbnailSourceSize($hThumbnail) Local $iWidth = DllStructGetData($tSIZE, 1) Local $iHeight = DllStructGetData($tSIZE, 2) Local $tDestRect = _WinAPI_CreateRectEx((400 - $iWidth / 2) / 2, (400 - $iHeight / 2) / 2, $iWidth / 2, $iHeight / 2) Local $tSrcRect = _WinAPI_CreateRectEx(-20, -20, $iWidth + 40, $iHeight + 40) _WinAPI_DwmUpdateThumbnailProperties($hThumbnail, 1, 0, 255, $tDestRect, $tSrcRect) GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE WinClose("[CLASS:CalcFrame]", "")