Rendre transparant son bureau

Soyez le premier à donner votre avis sur cette source.

Vue 3 319 fois - Téléchargée 267 fois


Description

bon , suite a l'echec de mes progs multi-fonctions , je vous propose ce programme qui rendra transparent tout les programmes actifs .

Source / Exemple :


'dans une form nomé Invisible :
Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Declare Function SetLayeredWindowAttributes Lib "USER32" _
(ByVal hWnd As Long, ByVal crKey As Long, _
ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2

Public Sub MakeWindowTransparent(ByVal hWnd As Long, ByVal alphaAmount As Byte)
Dim lStyle As Long
lStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, lStyle
SetLayeredWindowAttributes hWnd, 0, alphaAmount, LWA_ALPHA
End Sub

Private Sub Form_Load()
Call MakeWindowTransparent(Invisible.hWnd, 0)
End Sub

Private Sub Timer1_Timer()
For h = 1 To 100000
Call MakeWindowTransparent(h, 50)
Next h
End
End Sub

Conclusion :


pas de bug mais n'utiliser pas ce programme quand beaucoup d'autre prog sont actif car la transparence peut etre genante

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Ce sera pareil !

Ce qu'il faut, c'est récupèrer les "vrais" handles de fenêtres des fenêtres affichées (voir ma source nommée Anti-Pub), et ensuite appliquer la transparence pour ces fenêtres là uniquement.

Imagine, si tu as 2 fenêtres affichées, ca te prendra alors 2 appels à l'API avec les bons handles avec ma méthode, alors qu'avec la tienne, ca prendra 2000000 d'appels ! Y'a pas photos !

DarK Sidious
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
darksidious tu croit que si je met un timer avec un intervale de 1 et que je met ce code
dim h as long
------------------------------------------------------------
private sub timer_timer()
h=h+1
call makewindowtransparent(h,50)
end sub
ca va moi utiliser de CPU
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Oui, je suis d'accord, mais cela demande 2 fois plus de CPU encore !

DarK Sidious
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
ok je vai reflechir a ca mais pour les handle il sufit de modifier le numero 10000 comme par exemple
For h = -10000 To 1000000
Call MakeWindowTransparent(h, 50)
Next h
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Au fait, j'y pense, si une fenêtre à un handle supérieur à 100 000, ou un handle négatif ? Parce que les handles de fenêtres sont codés sur des entiers longs...

De plus, cette méthode rend transparent également tout les contrôles possèdant un hWnd, ce qui demande beaucoup de CPU pour tout les rendre transparents s'il y en a beaucoup...

Quelques pistes à étudier pour éviter une boucle naïve sur les handles possibles !

DarK Sidious
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.