Bonne journée tout
J’ai cherché sur le Web des instructions pour savoir si cela était possible mais en vain. J’ai besoin d’écrire une application qui me permettra de sélectionner une autre application et de rendre l’application sélectionnée translucide et superposée (comme une superposition d’images fantômes).
Est-ce possible avec Delphi? J’utilise Delphi XE et Lazarus. Si quelqu’un pouvait juste me faire savoir dans quelle direction commencer, je serais très obligé.
Merci d’avance,
Vous pouvez le faire, mais ce n’est pas recommandé , car ce type de comportement doit être géré par la propre application. de toute façon, si vous insistez parce que vous avez une très bonne raison de le faire , je laisse ici le code pour définir la transparence d’une fenêtre et Créer une fenêtre Top Most, juste pour montrer comment faire.
Transparence
vous devez utiliser la fonction SetWindowLong
avec l’indicateur WS_EX_LAYERED
et la fonction LWA_ALPHA
avec LWA_ALPHA
pour définir la transparence.
Procedure SethWndTrasparent(hWnd: HWND;Transparent:boolean); var l : Longint; lpRect : TRect; begin if Transparent then begin l := GetWindowLong(hWnd, GWL_EXSTYLE); l := l or WS_EX_LAYERED; SetWindowLong(hWnd, GWL_EXSTYLE, l); SetLayeredWindowAtsortingbutes(hWnd, 0, 180, LWA_ALPHA); end else begin l := GetWindowLong(hWnd, GWL_EXSTYLE); l := l xor WS_EX_LAYERED; SetWindowLong(hWnd, GWL_EXSTYLE, l); GetWindowRect(hWnd, lpRect); InvalidateRect(hWnd, lpRect, true); end; end;
Faire une fenêtre Top Most
Vous devez utiliser la fonction SetWindowPos
transmettant la valeur HWND_TOPMOST
qui place la fenêtre au-dessus de toutes les fenêtres non les plus hautes. La fenêtre conserve sa position la plus haute même lorsqu’elle est désactivée.
Procedure SethWndOnTop(hWnd: HWND); var lpRect : TRect; begin if GetWindowRect(hWnd,lpRect) then SetWindowPos(hWnd , HWND_TOPMOST, lpRect.left, lpRect.top, lpRect.Right-lpRect.left, lpRect.Bottom-lpRect.Top, SWP_SHOWWINDOW); end;
Windows peut le faire mais une application n’a aucun espoir de le faire de manière robuste.