2010-03-02 6 views
1

У нас есть приложение C#, которое отлично работает на Windows XP и Vista Windows, но не отображает панель задач (только в Vista). В Windows Vista приложение не имеет иконки в нижней панели инструментов, т. Е. Если у меня открыто приложение, а затем я перехожу к другому приложению, единственный способ, которым я могу вернуться к приложению, - это вкладка alt +, я не могу щелкнуть значок внизу.Приложение Windows не отображается в панели задач на vista

Другие функции приложения работают одинаково в XP & Vista. Пожалуйста, сообщите, как вернуть это на Vista?

С уважением,

ответ

1

Мы исправили его, установив свойство свойства showintaskbar в значение true.

Странно, что все окна os не запускают приложения так же!

1

Windows, использует расширенные биты стиля решить, следует ли окно иметь значок на панели задач, эти стили непосредственно не доступны в C#, но должен быть установлен правильно, если ваша форма является нормальной формой приложения.

Флаг, который управляет этим, является WS_EX_APPWINDOW, установленным в расширенных стилях вашего окна верхнего уровня. Из документации CreateWindowEx

WS_EX_APPWINDOW Заставляет окно верхнего уровня на панели задач, когда окно видно.

Вы можете использовать Spy ++, чтобы узнать, установлен ли этот флаг для вашего окна. Единственный способ, который я точно знаю, это использовать interop.

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

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

const int GWL_EXSTYLE = -20; 
const int WS_EX_APPWINDOW = 0x00040000; 

int ExStyle = GetWindowLong(form.Handle, GWL_EXSTYLE); 
SetWindowLong(form.Handle, GWL_EXSTYLE, new IntPtr(ExStyle | WS_EX_APPWINDOW)); 
Смежные вопросы