![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Как идентифицировать те из них, которые находятся на десктопе?
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: нет Всего: 23 |
Чтобы обратиться к самому верхнему окну, можно просто написать GetWindow(0, GW_HWNDFIRST)
|
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
ИванМ, это вроде самое верхнее в z-order. А мне нужно узнать, развернуто(не обязательно на весь экран) окно на экране или нет.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
GremlinProg, мне надо свернуть все top-level windows, которые на даный момент есть на рабочем столе. Т.е., parent у них десктоп. Если я проверяю FALSE в IsIconic, то стопкой на рабочий стол сворачивается куча каких-то левых окошек.
Добавлено через 8 минут и 40 секунд Гм, как оказалось, необязательно.. -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
IsIconic - функция, которая только возвращает информацию, она ничего не сворачивает, а вот вернуть FALSE может для окон, которые к тому же невидимы, поэтому тут надо еще проверять и этот момент:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Такой фильтр фильтрует большинство окон. Однако остается "Пуск", панель задач и т.д., всего до десятка. Какое дополнительное условие может отфильтровать, к примеру, "Пуск"? Как однозначно выделить именно это окно среди всех остальных возможных, для которых GetWindowText возвращает "Пуск"("Start" и так далее для других языков), размеры такие же и даже те же координаты(что очень маловероятно, но возможно тем не менее)?
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
у "Пуск" CtrlID = 0x130, у трея CtrlID = 0x12f, у ребара панели задач CtrlID = 0xa005 и т.д. см. Spy++
помимо этого, все они находятся на панели задач, т.е. у всех стоит стиль WS_CHILD, а класс панели задач Shell_TrayWnd, т.е. способов фильтровать предостаточно: 1. проверить наличие стиля WS_CHILD - отметет все дочерние 2. проверить наличие в любом колене родителя с классом Shell_TrayWnd - отметет любых участников панели задач 3. проверить GetDlgCtrlID, если нужен индивидуальный подход -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
По поводу пункта 1 у меня ни одно из лишних окон не имеет стиля WS_CHILD. Может неправильно проверяю, делаю следующим образом:
GetWindowInfo(), dwStyle == 2483031040. Это "Пуск". Где там WS_CHILD? Получается, что ни один из предложенных вариантов не работает. Это сообщение отредактировал(а) S.A.G. - 7.12.2010, 14:21 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
https://docs.google.com/leaf?id=0B3exyGGpaH...1ODg5&hl=en -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Я правильно проверяю наличие стиля?
2483031040 - здесь его нет 54000D00 - а здесь есть Почему у меня нет? Windows 7 если что. Это сообщение отредактировал(а) S.A.G. - 7.12.2010, 14:44 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
а где эта проверка? правильно так:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
GremlinProg, посмотрел в спае, вы удивитесь, но там пуск не чяйлд). WS_POPUP, WS_VISIBLE, WS_CLIPSIBLINGS, BS_PUSHBUTTON, BS_TEXT, BS_TOP, BS_BOTTOM - это все что есть в окошке основные стили. Хэндл такой же как и у меня в программе(2483031040).
Это сообщение отредактировал(а) S.A.G. - 7.12.2010, 14:57 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
это самый весомый фактор :)) я на хр в данный момент Это сообщение отредактировал(а) GremlinProg - 7.12.2010, 15:02 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Похоже в 7 пуск повысили до WS_POPUP. В связи с этим будут какие-то предложения по теме?
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |