opaQue Selector: Прозрачность панели задач, как в Висте.

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Денис » 16.10.2009 (Пт) 17:41

Предлагаю на суд любителей свистелок и перделок небольшую утилитку, которая управляет (переключает) прозрачностью панели задач рабочего стола таким образом, как это реализовано в Aero™ Висты и выше. Тоесть, когда на экране есть развернутые окна, панель задач делается непрозрачной, когда таких окон нет, панель задач делается полупрозрачной.

[UPD] Добавил код. [/UPD]
Подозреваю, что таких утилит в сети куча, но у моей есть неоспоримое преимущество — опен сорц.
Вся прога сделана на API, работает следующим образом: висит в фоне, по таймеру перебирает все открытые окна и если находит хотя бы одно видимое и развернутое на весь экран, то задаёт панели задач верхнюю границу прозрачности (по-умолчанию непрозрачность, меняется в настройках) иначе, задает панели нижнюю границу прозрачности. Для пущей красоты прозрачность меняется плавно (поведение задается в настройках).
Что радует — программа совершенно не расходует процессорное время (я отмечал 3% максимум, но обычно меньше процента).

В архиве сам exe, ярлык запуска, ярлык настроек и пакетник для остановки (убивания taskkill'ом). На моем домашнем компе проге почему-то не понравился msvbvm60 пришлось положить с работы в папку с прогой. Хотелось бы узнать, у кого еще не заработает. (UPD: Вопрос решен. На моем компе был поврежденный msvbvm60)

В настройках все просто. Там их раз-два и обчелся. Единственное, что может смутить, хитрый самодельный контрол для задания границ прозрачности. Управляется левой и правой клавишей мыши для задания нижней и верхней границы соответственно.
Во время первого запуска программа предлагает создать файл настроек, так что позаботьтесь о правах на запись в папку с ней.

Ну, в общем, вот. Буду благодарен за отзывы и найденные баги.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Денис 19.10.2009 (Пн) 7:33, всего редактировалось 2 раз(а).
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Debugger » 16.10.2009 (Пт) 18:07

Интересная тулзинка. Хотя конечное назначение не понятно. Ну, разве что для
свистелок и перделок

и просто чтобы показать знакомым.
А после убивания не хочешь восстанавливать прозрачность?
P.S. Зарегистрирован новый фразеологический оборот - "свистелки и перделки". Скоро он будет наравне с многочисленными "религиями": "А написать col(i) вместо col.Item(i) религия не позволяет?", "Пора бы уже запомнить православную запись числа: 0x39F".

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Денис » 16.10.2009 (Пт) 19:11

Debugger писал(а):Интересная тулзинка. Хотя конечное назначение не понятно.

Поправил описание. Надеюсь станет понятней.
Debugger писал(а):А после убивания не хочешь восстанавливать прозрачность?

Займусь этим после выходных, еще планирую посылать сообщения предыдущему инстансу, чтобы он открывал окно настроек. Не хочется засорять трей лишним мусором, но в идеале оба этих варианта можно реализовать через меню иконки в трее. Но мне больше по душе реализовать через командную строку и PrevInstance.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Денис » 19.10.2009 (Пн) 7:33

Ап.
Потому что добавил код.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Antonariy » 19.10.2009 (Пн) 11:18

Тоесть, когда на экране есть развернутые окна, панель задач делается непрозрачной, когда таких окон нет, панель задач делается полупрозрачной.
Зачем? Что там есть такого под таскбаром, на что стоит смотреть сквозь него?
Хоть какой-то смысл появится, если убрать зависимость от окон и сделать таскбар автоматически убирающимся — окна станут разворачиваться на весь экран и будет видна их нижняя часть сквозь таскбар при его появлении.
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Денис » 19.10.2009 (Пн) 12:53

Antonariy писал(а):Зачем? Что там есть такого под таскбаром, на что стоит смотреть сквозь него?

Wallpaper

Тоесть, чтобы не было недопонимания: программа не делает непрозрачный таскбар прозрачным, программа делает прозрачный таскбар непрозрачным. Чтобы при развернутых на весь экран окнах прозрачность таскбара не раздражала зрение фрагментами обоев.

И вдогонку вопрос всем. Делаю показ окна настроек при повторном вызове программы. Делаю так:
Код: Выделить всё
   rc = GetWindowLong(PrvHWND, GWL_STYLE)
   
   If Not (rc Or WS_VISIBLE) Then
      rc = rc Or WS_VISIBLE
   End If
   
   SetWindowLong PrvHWND, GWL_STYLE, rc


PrvHWND известен заранее и это хендл окна предыдушего инстанса. Окно появляется, но не перерисовывается. Если поводить мышкой в том месте, где оно расположено, начинают проявляться контролы и если угадать расположение заголовка и потягать за него, то тогда оно (окно) появляется полностью. В том числе кнопка на таскбаре.
Я пробовал посылать WM_PAINT, WM_ACTIVATE,
Код: Выделить всё
   PostMessage PrvHWND, WM_ACTIVATE, 0, 0
   PostMessage PrvHWND, WM_PAINT, 0, 0

но ничего не помогает. Подскажите?
_________________

Новая версия.
Добавлено:
- Иконка. Теперь у программы есть своя иконка.
- Манифест.
- Рефакторинг и оптимизация функций работы с настройками. Теперь можно через запускной ярлык указать папку для сохранения файла настроек.
Исправлено:
- Глюк контрола при задании верхней границы ниже нижней.
- Анимация теперь работает и в вышеуказанном случае.
Известные проблемы:
- При повторном запуске окно дурно прорисовывается. Надо его отыскивать, бегая мышкой по экрану. Как разберусь с сообщениями - будет релиз. Пока что рекомендуется убивать процесс и запускать из ярлыка с опцией /setup
У вас нет доступа для просмотра вложений в этом сообщении.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Денис » 21.10.2009 (Ср) 10:50

Итак, встречайте!

Релиз.

Что нового?
- Добавлены языковые файлы. Локализация переключается мгновенно на лету.
- Добавлен простенький графический дизайн окна настроек.
- При повторном запуске предлагается либо открыть настройки, либо закрыть предыдущий инстанс.
- Открытие окна настроек из другого инстанса реализовано элегантно, через опцию в файле настроек.
- Так же реализовано и завершение работы программы.
- В связи с появлением кучи файлов могут возникнуть глюки. Рекомендуется стереть старый файл настроек. Языковые файлы следует ложить рядом с ним (по умолчанию в папке с exe)

А вообще, удивительно. Казалось бы, маленькая, простейшая прога, а сколько труда! Всё-таки я не программист.
У вас нет доступа для просмотра вложений в этом сообщении.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Twister » 02.12.2009 (Ср) 19:12

If Not (rc Or WS_VISIBLE) Then
Вообще-то наличие флага определяется битовым and'ом. :shock:
А я все практикую лечение травами...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: opaQue Selector: Прозрачность панели задач, как в Висте.

Сообщение Денис » 02.12.2009 (Ср) 19:29

Twister писал(а):
If Not (rc Or WS_VISIBLE) Then
Вообще-то наличие флага определяется битовым and'ом. :shock:

Окей, запомню на будущее. В релизе я от этого кода отказался. Видимость регулируется через конфиги.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

    TopList