Приложение Windows, не показывающее в панели задач на перспективе

У нас есть приложение C#, которое хорошо работает на Windows XP и Windows Vista, НО не показывает панель задач (только в Vista). В Windows Vista приложение не имеет значка на нижней панели инструментов т.е. если у меня есть открытое приложение, и затем я перехожу к другому приложению единственным путем, я могу возвратиться к приложению, alt+tab через, я не могу нажать значок внизу.

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

С уважением,

1
задан ToughPal 2 March 2010 в 20:10
поделиться

2 ответа

Мы исправили это, установив для свойства формы свойство showintaskbar значение true.

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

1
ответ дан 3 September 2019 в 01:08
поделиться

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));
1
ответ дан 3 September 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: