Security Teams



:::
  Ответ в темуСоздание новой темыСоздание опроса

> Удалить ЧУЖУЮ кнопку в таскбаре
cl0ne
Дата 10.07.2007 - 14:50
Цитировать сообщение
Offline



Activist
**

Профиль
Группа: -users-
Сообщений: 67
Пользователь №: 4685
Регистрация: 21.11.2006



Рейтинг:
(0%) -----


Ситуация: есть таскбар, есть HWND интересующего окна. Нужно убрать кнопку сабжевого окна из таскбара. Окно не наше, хендла процесса, создавшего окно, нет и не будет.

Если бы окно было наше, можно было просто сказать ShowWindow(hProcessHande, SW_HIDE), а как быть в этой ситуации?

Это сообщение отредактировал cl0ne - 10.07.2007 - 14:51
PMПисьмо на e-mail пользователю
Top
drmist
Дата 10.07.2007 - 19:17
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


Есть по крайней мере три способа:
Первые два заключаются в том, чтобы изменить родителя окна:
Код
SetParent(hWnd, FindWindow("Shell_TrayWnd", NULL));

В этом случае окно исчезает из таскбара и становится невидимым.

Код
SetParent(hWnd, FindWindow("Progman", NULL));

В этом - исчезает из таскбара и становится позади всех окон.

Если эти варианты не подходят - можно воспользоваться интерфейсом ITaskbarList:
Код
CoInitialize(NULL);
ITaskbarList *pTaskBar = 0;
HRESULT hr = CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_ALL, IID_ITaskbarList, (void**)&pTaskBar);
if (SUCCEEDED(hr)) {
 pTaskBar->DeleteTab(hBrowserWnd);
 pTaskBar->Release();
}
CoUninitialize();

У этого способа также есть недостатки. 1) Придется качать увесистый Platform SDK, ибо из него необходимо заинклудить shobjidl.h 2) Почему-то метод ::DeleteTab срабатывает только после примерно одной секунды после создания окна, потому если необходимо скрыть кнопку в таскбаре сразу после создания окна придется вызывать Sleep() и в этом случае кнопка в таскбаре "мигнет" - сначала в любом случае появится, потом исчезнет.


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top

Опции темы Ответ в темуСоздание новой темыСоздание опроса