Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RENDRE TRANSPARANT SON BUREAU


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 29/12/2004 Date de mise à jour : 29/12/2004 11:54:59 Vu / téléchargé: 2 308 / 201

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

Description

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

Source

  • '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
'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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

29 décembre 2004 11:55:00 :
probleme avec mon zip

Commentaires et avis

signaler à un administrateur
Commentaire de mandark le 29/12/2004 11:54:29

"For h = 1 To 100000"
c'est un peu "violent", non ?
J'ai pas testé mais ca met combien de temps à s'executer ?
un petit doevents au milieu serait peut être le bienvenu ;p

signaler à un administrateur
Commentaire de fg85 le 29/12/2004 12:09:41

On fé comment pour remmettre com d'hab ??
Parce que moi , c pas la joie :-(
Vite please !!!

signaler à un administrateur
Commentaire de fg85 le 29/12/2004 12:11:33

OUff , c bon , il suffit de redémmarrer explorer , sinon avec un p4 à 3.8Ghz ça à fait bugger .

signaler à un administrateur
Commentaire de DARKSIDIOUS le 29/12/2004 12:40:42 administrateur CS

Il serait préférable de récupèrer les handles de fenêtres plutôt que de rendre tout les handles transparents ! Ca éviterais sûrement les risques de plantages !

DarK Sidious

signaler à un administrateur
Commentaire de fg85 le 29/12/2004 12:41:49

Tout à fait d'accord ;-)

----------------------------
http://fg.logiciel.free.fr

signaler à un administrateur
Commentaire de CCJ le 29/12/2004 13:01:16

oui je sais j'ai un prog comme ca mais c'est  un peut barbare car sa renome les fenetres par leurs handle et apres tu entre le handle de la ciblepour la rendre transparante.Je mettrai une source quand j'aurai fini avec des fonction pour modif les prog en cour mais j'ai pas fini donc un peut de patience SVP

signaler à un administrateur
Commentaire de CCJ le 29/12/2004 13:03:44

sinon pour rendre  a un prog son apparence initiale il sufiit de remplacer :
Private Sub Timer1_Timer()
For h = 1 To 100000
Call MakeWindowTransparent(h, 50)
Next h
End
End Sub
par:
Private Sub Timer1_Timer()
For h = 1 To 100000
Call MakeWindowTransparent(h, 250)
Next h
End
End Sub

signaler à un administrateur
Commentaire de fg85 le 29/12/2004 14:29:15

ok, merci ;-) (déja je trouve ce programme nettement plus sympathique)

signaler à un administrateur
Commentaire de DARKSIDIOUS le 29/12/2004 14:49:36 administrateur CS

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

signaler à un administrateur
Commentaire de CCJ le 29/12/2004 20:01:39

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

signaler à un administrateur
Commentaire de DARKSIDIOUS le 29/12/2004 20:06:04 administrateur CS

Oui, je suis d'accord, mais cela demande 2 fois plus de CPU encore !

DarK Sidious

signaler à un administrateur
Commentaire de CCJ le 30/12/2004 10:28:40

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

signaler à un administrateur
Commentaire de DARKSIDIOUS le 30/12/2004 10:39:41 administrateur CS

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

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.