2009-08-13 8 views
2

J'essaie de définir la transparence de toutes les fenêtres. J'ai le code suivant.ne puis-je pas définir la transparence d'une fenêtre par son handle dans C#?

public partial class Form1 : Form 
{ 
    [DllImport("user32.dll")] 
    static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 

    [DllImport("user32.dll")] 
    static extern int GetWindowLong(IntPtr hWnd, int nIndex); 

    [DllImport("user32.dll")] 
    static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags); 

    public const int GWL_EXSTYLE = -20; 
    public const int WS_EX_LAYERED = 0x80000; 
    public const int LWA_ALPHA = 0x2; 

    public Form1() 
    { 
     InitializeComponent(); 
     this.Load += new EventHandler(Form1_Load); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Process[] processlist = Process.GetProcesses(); 

     foreach (Process theprocess in processlist) 
     { 
      SetWindowLong(theprocess.Handle, GWL_EXSTYLE, 
       GetWindowLong(theprocess.Handle, GWL_EXSTYLE)^WS_EX_LAYERED); 
      SetLayeredWindowAttributes(theprocess.Handle, 0, 128, LWA_ALPHA); 
     } 

    } 
} 

Rien ne se passe lorsque j'exécute le code.

Quel est le problème?

Répondre

5

SetWindowLong prend une poignée de fenêtre (hWnd), mais vous re passer un handle de processus à la place. Remplacez toutes les instances de

à

theProcess.MainWindowHandle 

Après avoir changé cela, il a travaillé sur la machine Windows XP je l'ai testé sur. Maintenant, je vais devoir modifier le code pour ramener les fenêtres à la normale;) Heureusement, la fenêtre Visual Studio 2010 n'a pas été affectée.

+0

Exactement ce que je voulais !!! Merci – Moon

1

Avez-vous essayé le réglage the Opacity?

this.Opacity = 0.50; 
+2

Cela ne ferait que définir l'opacité de la fenêtre en cours, ce qui n'est pas ce qu'il essaie d'accomplir. – Thorarin

2

Cette partie de votre code:     ^ WS_EX_LAYERED   flips le bit WS_EX_LAYERED,

Je pense que vous voulez:     | WS_EX_LAYERED

Questions connexes