Прикрепить приложение к рабочему столу в Vista

У меня есть приложение, которое я хочу прикрепить к рабочему столу. Придерживаться рабочего стола означает, что каждый раз, когда кто-то нажимает Windows + D или значок «Показать рабочий стол», рабочий стол будет отображаться с приложением на нем.

Пользователь может найти приложение на рабочем столе и изменить его в любое время, но оно всегда остается на рабочем столе.

Нам удается сделать это на XP, установив родителем приложения рабочий стол с помощью методов WinAPI SetParent (this .Handle, FindWindow ("Progman", null));.

В Vista нам удается прикрепить его к рабочему столу, всякий раз, когда рабочий стол получает фокус, он рисует серый фон вокруг окна. этот фон не исчезает, когда мое окно перемещается, оставляя на рабочем столе уродливые квадраты. когда я нажимаю Windows + D, они все исчезают. Обратите внимание, что на XP этого не происходит вообще.

Клиент основан на .NET 3.0 и WPF.

Любая идея, почему это происходит и как это решить?


person Community    schedule 03.09.2009    source источник


Ответы (1)


используйте следующий код и передайте дескриптор окна функции во время загрузки формы, надеюсь, это полностью решит вашу проблему

public void SetFormOnDesktop(IntPtr hwnd) {  
IntPtr hwndf = hwnd;  
IntPtr hwndParent = FindWindow("ProgMan", null);  
SetParent(hwndf, hwndParent);  
}
person Suriyan Suresh    schedule 05.05.2010