2010-01-09 16 views
0

Titre long, mais problème simple.C# créer une fenêtre collante sur le bureau avec transperancy

Je suis en train de laisser un bâton de fenêtre sur le Destop (ou la broche), je peux le faire comme ceci:

[DllImport("User32.dll")] 
    static extern IntPtr FindWindow(String lpClassName, String lpWindowName); 
    [DllImport("user32.dll", SetLastError = true)] 
    static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 
    [DllImport("user32.dll")] 
    static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

     IntPtr pWnd = FindWindow("Progman", null); 
     pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SHELLDLL_DefVIew", null); 
     pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SysListView32", null); 
     IntPtr tWnd = this.Handle; 
     SetParent(tWnd, pWnd); 

Cela fonctionne très bien, mais je ne peux pas changer ou opacitiy en garantissant la transparence.

Je peux utiliser CreateWindowEx pour créer une belle fenêtre transparente en couches, mais cette méthode ne fonctionne plus pour l'épingler au bureau!

Quelqu'un sait comment cela peut-il être fait?

Merci!

+1

Pourquoi cette méthode ne marche-t-elle plus? – Thomas

Répondre

1

Seules les fenêtres de niveau supérieur peuvent être créées en couches. Avec votre approche, vous créez une fenêtre enfant à la fenêtre du bureau, par conséquent, elle ne peut pas être superposée.

Il serait peut-être préférable d'expliquer ce que vous entendez par "coller"/"épingler" une fenêtre sur le bureau. Je suppose que vous voulez mettre la fenêtre à une position particulière sur le bureau et le garder toujours là, mais il doit y avoir quelque chose de plus à ce qui me manque. Sinon, pourquoi ne pas simplement positionner la fenêtre à des coordonnées particulières sur l'écran ne fonctionne pas pour vous?

+0

Je voudrais avoir mon formulaire pour "coller" au deskopt, donc si je minimise tout, il sera toujours visible, il doit faire partie de l'écran du bureau, un peu comme la barre latérale des gadgets! Cela fonctionne bien avec le code affiché, mais la transperance ne fonctionnera pas de cette façon, donc je suis à la recherche d'une solution qui fait les deux! :) – YesMan85