powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Иконка: чтоб не отображалась на форме, но отображалась в панели задач и по Alt+TAB
3 сообщений из 3, страница 1 из 1
Иконка: чтоб не отображалась на форме, но отображалась в панели задач и по Alt+TAB
    #38940245
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как убрать с формы понятно.
FormBorderStyle=FixedDialog (у меня именно этот вариант)
В .Net еще можно ShowIcon=False (если используется первый вариант, то ShowIcon пофиг)

Но при этом он ее убирает из панели задач и из Alt+TAB (рисует стандартный прямоугольник).

Ладно, не лыком шиты, знаю хитрость как ее восстановить.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Public Class Form1

  'Window Notifications
  Public Const WM_GETICON = &H7F

  Public Const ICON_SMALL = 0
  Public Const ICON_BIG = 1

  'значения надо присваивать до Form1_Load!!!
  Dim IconTAB As Icon = New Icon(Me.Icon, 32, 32) 'иконка для Висты 32х32 для Alt+Tab
  Dim IconTASK As Icon = New Icon(Me.Icon, 16, 16) 'иконка 16х16 для Taskbar(это если XP)

  Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    'Debug.WriteLine(m.ToString())

    Select Case m.Msg
      Case WM_GETICON
        If m.WParam = New IntPtr(ICON_BIG) Then 'запрос правильной иконки для Alt-Tab на Висте
          m.Result = IconTAB.Handle
          Exit Sub
        ElseIf m.WParam = New IntPtr(ICON_SMALL) Then 'запрос правильной иконки для TaskBar
          m.Result = IconTASK.Handle
          Exit Sub
        End If
      Case Else
    End Select

    ' Forward message to base WndProc.
    MyBase.WndProc(m)
  End Sub

End Class



На Win8.1, Висте, 7-ке это работает.

На XP иконка которая Alt-TAB таким методом не лечится.

Объясню различия:
на XP - в Alt-TAB отображается иконка ПРИЛОЖЕНИЯ (т.е. значок exe-шника)
на Vista-8.1 - в Alt-TAB отображается иконка ФОРМЫ.

Но снятие иконки с шапки формы (FixedDialog либо ShowIcon=False ) убивает иконку в Alt-TAB и на XP тоже.
(!!!В VB именно на XP не убивало)

Как восстановить Alt+TAB иконку на XP?

Или м.б. в Net есть какие штатные фишки на эту тему?
(в принципе счас проверил, на XP мой "фокус" даже и вообще не нужен, он в этом случае ставит exe-иконку для Taskbar. Но не для Alt+TAB!!! )
...
Рейтинг: 0 / 0
Иконка: чтоб не отображалась на форме, но отображалась в панели задач и по Alt+TAB
    #38940483
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет идей для XP.

Либо оставлять иконку в шапке формы (чего в данном случае делать не хочу).
Либо жертвовать отображением иконки в Alt-Tab, да и в Task Manager тоже (TaskBar слава богу отображает иконку exe в этом случае).
Скорее придется согласиться со вторым вариантом.

Как вернуть иконку только в Alt-Tab, чтоб она при этом не засветилась в шапке я не знаю.
А стоит убить в шапке, .Net ее убивает и в Alt-tab. В VB6 так не было. Мелочь, а обидно.

P.S. в 8-ках то с моим фокусом c WM_GETICON все чудненько.
...
Рейтинг: 0 / 0
Иконка: чтоб не отображалась на форме, но отображалась в панели задач и по Alt+TAB
    #38941184
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки нашел решение для XP:

1) В конструкторе делаем ShowInTaskBar = false
2) На Taskbar выводим через API, а не через True:
Код: vbnet
1.
2.
  Private Sub frm1_Load(sender As Object, e As EventArgs) Handles Me.Load
    SetWindowLong(Me.Handle, GWL_EXSTYLE, GetWindowLong(Me.Handle, GWL_EXSTYLE) Or WS_EX_APPWINDOW) 


Тогда иконка в Alt+TAB отображается исправно.

Есть издержка:
приложение не отображается в Диспетчере задач (Task Manager), т.е. только в процессах но не в приложениях.
Это уже совсем мелочь, но все же интересно почему и как вернуть. Все же непорядок.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Иконка: чтоб не отображалась на форме, но отображалась в панели задач и по Alt+TAB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]