У нас есть приложение C#, которое хорошо работает на Windows XP и Windows Vista, НО не показывает панель задач (только в Vista). В Windows Vista приложение не имеет значка на нижней панели инструментов т.е. если у меня есть открытое приложение, и затем я перехожу к другому приложению единственным путем, я могу возвратиться к приложению, alt+tab через, я не могу нажать значок внизу.
Другие функции приложения работают то же в XP & Vista. Советуйте, как возвратить это на Vista?
С уважением,
Мы исправили это, установив для свойства формы свойство showintaskbar значение true.
Странно, что все ОС Windows не запускают приложения одинаково!
Windows использует биты расширенного стиля, которые определяют, должно ли окно иметь значок на панели задач. Эти стили не доступны напрямую в C #, но должны быть установлены правильно, если ваша форма является обычной формой приложения.
Флаг, который управляет этим, - это WS_EX_APPWINDOW
, установленный в расширенных стилях окна формы верхнего уровня. Из документации CreateWindowEx
WS_EX_APPWINDOW
Принудительно помещает окно верхнего уровня на панель задач, когда окно является видимым.
Вы можете использовать Spy ++, чтобы узнать, установлен ли этот флаг для вашего окна или нет. Единственный способ, который я точно знаю установить, - это использовать взаимодействие.
[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));