Win32: Как скрыть сторонние окна в панели задач от hWnd - PullRequest
16 голосов
/ 28 августа 2011

Мне нужно скрыть всплывающие окна в сторонней библиотеке.

Я реализовал хук Windows с помощью SetWindowsHookEx и знаю все вновь созданные hWnd (s).Я слушаю HSHELL_WINDOWCREATED callback и делаю следующее:

long style= GetWindowLong(hWnd, GWL_STYLE);
style &= ~(WS_VISIBLE);    // this works - window become invisible 

style |= WS_EX_TOOLWINDOW;   // flags don't work - windows remains in taskbar
style &= ~(WS_EX_APPWINDOW); 

SetWindowLong(hWnd, GWL_STYLE, style);      

Что я делаю не так, чтобы скрыть вновь созданные окна в панели задач?

Ответы [ 2 ]

21 голосов
/ 28 августа 2011

Прежде чем использовать SetWindowLong, позвоните ShowWindow(hWnd, SW_HIDE), затем наберите SetWindowLong, затем снова наберите ShowWindow, как ShowWindow(hWnd, SW_SHOW). Итак, ваш код будет выглядеть так:

long style= GetWindowLong(hWnd, GWL_STYLE);
style &= ~(WS_VISIBLE);    // this works - window become invisible 

style |= WS_EX_TOOLWINDOW;   // flags don't work - windows remains in taskbar
style &= ~(WS_EX_APPWINDOW); 

ShowWindow(hWnd, SW_HIDE); // hide the window
SetWindowLong(hWnd, GWL_STYLE, style); // set the style
ShowWindow(hWnd, SW_SHOW); // show the window for the new style to come into effect
ShowWindow(hWnd, SW_HIDE); // hide the window so we can't see it

Вот соответствующая цитата на веб-сайте Microsoft :

Чтобы кнопка окна не помещалась на панель задач, создайте неизвестное окно с расширенным стилем WS_EX_TOOLWINDOW. Как Кроме того, вы можете создать скрытое окно и сделать это скрытым окно владелец вашего видимого окна.

Оболочка удалит кнопку окна с панели задач, только если Стиль окна поддерживает видимые кнопки панели задач. Если хотите динамически изменить стиль окна на тот, который не поддерживает видимые кнопки панели задач, вы должны сначала скрыть окно (вызывая ShowWindow с SW_HIDE), измените стиль окна, а затем отобразите окно.

1 голос
/ 18 февраля 2018

Вы должны использовать GWL_EXSTYLE, чтобы получить / установить флаги EX, GWL_STYLE не будет работать для флагов EX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...