2010-01-09 2 views
0

Длинные название, но простая проблема.C# создание прилипающих окон на рабочем столе с трансперенсией

Я пытаюсь дать оконную ручку к Destop (или булавкой), я могу сделать это так:

[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); 

Это прекрасно работает, но я не могу изменить прозрачность, или opacitiy.

Я могу использовать CreateWindowEx для создания прозрачного прозрачного окна, но этот метод больше не работает, чтобы привязать его к рабочему столу!

Кто-нибудь знает, как это можно сделать?

Thank!

+1

Почему этот метод «больше не работает»? – Thomas

ответ

1

Только окна верхнего уровня могут быть созданы как слоистые. С вашим подходом вы создаете дочернее окно в окне рабочего стола, поэтому его нельзя сложить.

Возможно, было бы лучше, если вы попытаетесь объяснить, что вы подразумеваете под «прилипанием»/«закреплением» окна на рабочем столе. Я предполагаю, что вы хотите установить окно в определенном месте на рабочем столе и держать его всегда там, но должно быть что-то еще, что мне не хватает. В противном случае, почему бы не просто позиционировать окно в определенных координатах на экране, не работать для вас?

+0

Я бы хотел, чтобы моя форма «прилипала» к deskopt, поэтому, если я скрою все, она все равно будет видна, она должна быть частью экрана рабочего стола, как и боковая панель гаджетов! Это отлично работает с опубликованным кодом, но трансперенсинг не будет работать таким образом, поэтому я ищу решение, которое делает оба! :) – YesMan85