Rendre les fenêtres des autres applications transparentes dans Delphi

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.