===================================================================== AJPapps - Часы для Windows 2.04 Линда Кайе 2009-2021. Посвящается Ариэль ===================================================================== Эта программа выводит текущее время в заголовке активного окна, что может быть полезно, когда панель задач автоматически скрывается, и часы просто не видны, пока не наведёшь на них мышку. История создания ---------------- Давным-давно я написала программу на VB1, которая выводила время в заголовке активного окна. Она мне нравилась всем кроме того что окно не прячется ^^ Я задумала перенести её на VB5 и как-нибудь выйти из положения, но недостаточные знания Win32 API всё погубили... Недавно я всё же решила попробовать ещё раз, тем более что часто мышь в руки брать не охота, а панель задач у меня всегда спрятана ^^ Я начала переносить код, внося правки, но в итоге пришла к тому, что переписала всё заново ^^ История изменений ----------------- • 2.00.0009 Первый публичный релиз. • 2.00.0010 [+] Появился список исключения. [+] В Windows NT поддерживается Юникод в заголовках. • 2.00.0013 [+] В список исключений добавлены программы из набора Windows Live, а ещё МТС Коннект. • 2.00.0015 [+] При активизации полноэкранного приложения программа прекращает свою активность. • 2.01.0017 [+] Теперь интервал обновления - от 1 до 60000 мс. [+] Теперь можно настраивать правила игнорирования окон. [-] В мультимониторной конфигурации программа могла не определить полноэкранное приложение. • 2.01.0018 [+] Добавила хромоподобные броузеры в список правил. • 2.01.0019 [-] Программа не применяла правила к процессам, запущенным другими пользователями. [+] Добавила NetLimiter в список правил. • 2.02.0021 [+] Немного поправила диалог настроек. [+] Теперь иначе настраивается формат времени и способ его вывода в заголовке. Ознакомьтесь со справкой и перенастройте программу. [+] Выводить теперь можно не только время, но и сведения о памяти. • 2.02.0023 [+] Добавила SumatraPDF в список правил. • 2.02.0024 [+] Добавила Foxit Reader в список правил. • 2.02.0027 [+] Добавила новую Оперу (и, возможно, всякие варианты Chrome) в список правил. • 2.02.0028 [+] Добавлен файл Conditions.Optional.INI с интересными исключениями, которые могут быть полезны не всем. • 2.03.0029 [+] Теперь файл допонительных правил можно открыть из меню в трее. [+] Теперь при предпросмотре шаблона заголовка или формата времени в диалоге настроек выводится не только пример с текущими датой и временем, но и четыре случайных значения. • 2.03.0030 [7.04.2019] [+] Добавила в исключения Telegram Desktop. • 2.04.0031 [15.12.2019] [+] Поправила правила для Windows Live Mail. [+] Добавила в исключения Basilisk. [+] Добавила в опциональные исключения 1С с интерфейсом "Такси". [-] Алгоритм проверки правил не всегда работал правильно. • 2.04.0032 [19.12.2019] [-] Программа не определяла имена EXE файлов 64-битных процессов и неправильно обрабатывала исключения для таковых. • 2.04.0034 [23.04.2020] [+] Добавлено правило для Mozilla Thunderbird без заголовка. [+] Добавлено правило для мессенджера LINE. [+] Добавлено правило для Microsoft SQL Server Management Studio. • 2.04.0035 [6.03.2021] [+] Добавила в опциональные исключения WordPad в Windows 7. [+] Добавила в опциональные исключения ещё пару приложений Microsoft Office 2007 и выше. [+] Файл с примерами Conditions.Optional.INI теперь можно открыть из меню программы в трее (а не только через меню Пуск). Зависимости ----------- Для работы этой программы нужны следующие компоненты: • AJPapps - AJPapps support library 1.00 Файл AJPappsSupport0100.DLL • AJPapps - AJPapps support library FBE 1.00 Файл AJPappsSupportFBE0100.DLL • AJPapps - File I/O support 1.02 Файл FileIOSupport0102.DLL • AJPapps - System tray icon control 2.01 Файл SysTray0201.OCX • AJPapps - Библиотека общих функций 3.03 Файл CommonFunctions0303.DLL • Microsoft Visual Basic Virtual Machine Файл MSVBVM60.DLL Эти компоненты обязательны. Они уже включены в программу установки ^_^ Информация о разработке ----------------------- Язык: Microsoft Visual Basic 6.0 SP6 Платформа: Windows XP Professional SP3 Установка --------- Просто запустите Setup.WinClock.EXE, и программа установки сама создаст все необходимые ярлыки. Использование ------------- Всё просто. Запускаем программу, и её иконка появится в системном трее, а время - в заголовке активного окна. При переключении окон, время будет показываться только в активном. Щелчок по иконке программы вызывает меню, из которого можно вызвать диалог настроек программы. Здесь можно указать интервал обновления в миллисекундах (по умолчанию - 1000, то есть секунда), шаблон текста в заголовке и формат вывода времени. Этот формат соответствует формату функции Format() в Visual Basic. Шаблон заголовка ---------------- Эта строка содержит текст, который будет выведен через пробел после текста заголовка активного окна. В ней могут быть переменные, которые будут заменены на актуальные значения перед установкой в заголовок. Например. Имеется шаблон такого вида: :: Time is %time% Здесь "%time%" - это переменная. Переменные всегда начинаются и заканчиваются на знак процента, и заменяются программой на определённые значения. В этом случае заголовок окна будет выглядеть примерно так: Microsoft Word :: Time is 6:22 Переменная %time% была заменена на "6:22". Регистр переменной значения не имеет. Можно записать так как угодно: %time%, %Time%, %TIME%. А вот если переменная с таким именем не существует, то она так и останется висеть в заголовке. Например, так: Microsoft Word :: Time is %tome% Вот список переменных с пояснениями. %time% - эта переменная заменяется временем. Его формат определяется отдельной настройкой и описан в следующем разделе. Собственно, эта переменная и есть - главное предназначение программы. %MemoryLoadPercent% - загрузка памяти в процентах. Программа не подставляет значок процента, вы это должны сделать сами, например, так: "%MemoryLoadPercent%%". Обратите внимание на два процента в конце. Один - часть переменной, второй - просто символ процента. %MemoryAvailPercent% - это значение обратно предыдущему. Если то будет равно 30, то это - 70. Следующие переменные содержать некое число в байтах. Они никак не форматируются, поэтому 1 мегабайт будет выглядеть как "1048576", а не "1 Мб". %FreePhysical% - свободная оперативная память. %UsedPhysical% - занятая оперативная память. %TotalPhysical% - всего оперативной памяти. %FreePageFile% - свободное место в файле подкачки. %UsedPageFile% - занятое место в файле подкачки. %TotalPageFile% - всего места в файле подкачки. %FreeVirtual% - свободное место в виртуальной памяти. %UsedVirtual% - выделено виртуальной памяти. %FreeExtendedVirtual% - сама не знаю, что это ^^' %TotalVirtual% - всего виртуальной памяти. На мой взгляд наиболее полезны переменные %FreePhysical% и %UsedPageFile%. Первое просто интересно, а второй подскачет почему всё так начало тормозить. Следующие переменные соответствуют предыдущим, но программа их красиво форматирует, поэтому 1 мегабайт будет выглядеть именно как "1 Мб" (в зависимости от языка системы). %FreePhysical_fb% - свободная оперативная память. %UsedPhysical_fb% - занятая оперативная память. %TotalPhysical_fb% - всего оперативной памяти. %FreePageFile_fb% - свободное место в файле подкачки. %UsedPageFile_fb% - занятое место в файле подкачки. %TotalPageFile_fb% - всего места в файле подкачки. %FreeVirtual_fb% - свободное место в виртуальной памяти. %UsedVirtual_fb% - выделено виртуальной памяти. %FreeExtendedVirtual_fb% - сама не знаю, что это ^^' %TotalVirtual_fb% - всего виртуальной памяти. По умолчанию эта строка выглядит так: [%time%] Формат времени -------------- Строка формата времени - это шаблон, который использует программа для форматирования значения даты и времени. Ниже приведён список доступных масок, а я замечу, что чтобы программа не воспринимала символ как маску, нужно перед ним поставить обратный слэш. Вот, например, так: \D\D\D (:) - разделитель времени. Будет заменён на символ, указанный Вами в региональных настройках в панели управления. Чтобы использовать именно двоеточие, поставьте перед ним обратный слэш как на примере выше. (/) - разделитель даты, указанный в панели управления. Для России - точка. c - заменяет "ddddd ttttt", описанные ниже. d - дата без заполняющего нуля (1 - 31). dd - дата с заполняющим нулём (01 - 31). ddd - короткое название дня недели (Вт, Ср). dddd - полное название дня недели (Понедельник, Вторник). ddddd - короткое значение даты, как настроено в панели управления. Тоесть здесь формат берётся из системных настроек. dddddd - длинное значение даты, как настроено в панели управления. w - номер дня недели (1 - понедельник, 2 - вторник и так далее). ww - номер недели в году (1 - 54). m - месяц цифрой без заполняющего нуля (1 - 12). Если идёт за h или hh, то означает минуты (0 - 59). mm - месяц цифрой с заполняющим нулём (01 - 12). Если идёт за h или hh, то означает минуты (00 - 59). mmm - сокращённое название месяца (Янв, Фев). mmmm - полное название месяца (Январь, Февраль). q - квартал цифрой. y - день в году (1 - 366). yy - год двумя цифрами (00 - 99). yyyy - год четырьмя цифрами (100 - 9999). h - час без заполняющего нуля (0 - 23). hh - час с заполняющим нулём (00 - 23). n - минута без заполняющего нуля (0 - 59). nn - минута с заполняющим нулём (00 - 59). s - секунда без заполняющего нуля (0 - 59). ss - секунда с заполняющим нулём (00 - 59). ttttt - значение времени, как настроено в панели управления. То есть здесь формат берётся из системных настроек. AM/PM, am/pm, A/P, a/p - использовать двенадцати часовую систему времени. Также вместо этой маски подставляется один из указанных символов. То есть, если указано AM/PM, программа выберет либо AM, либо PM. AMPM - использовать двенадцати часовую систему времени. При этом символы выбираются из настроек в панели управления. Вот несколько примеров для форматирования 7 декабря 1958 года, 21:30: d mmmm yyyy \г\. - 7 декабря 1958 г. dd-mm-yy - 07-12-58 hh.nn.ss - 21:30:12 h.nn AMPM - 9:30 PM Формат времени в версии 1.02 ---------------------------- Возможно, при обновлении с версии 1.01 придётся из формата времени убрать лишние дополнительные символы. Их место теперь - в шаблоне заголовка. Например, вот из такого формата: \[ttttt\] придётся сделать такой: ttttt А скобочки перенести в шаблон заголовка: [%time%] О настройке шаблона заголовка читайте соответствующий раздел. Список исключений ----------------- Это список окон, в заголовке которых не будет выведено время. Это полезно в том случае, когда окно начинает вести себя неадекватно при установке времени, мельтешит или влияет на работоспособность программы. Списки хранятся в двух файлах (на самом деле, в трёх, но третий для отладки): - Conditions.INI в каталоге программы. Он обновляется мною и при каждой установке программы затирается. Внимание! Не редактируйте этот файл! - Conditions.INI в каталоге данных пользователя. Например, у меня этот путь выглядит так: C:\Documents and Settings\MSI U100-455RU\Application Data\ HalfMoon Studios\Часы для Windows\Conditions.INI Этот файл редактируется пользователем, программа установки его не трогает, все изменения на совести пользователя. Формат списка исключений ------------------------ Так как файл пока редактируется вручную, я расскажу о его формате. Итак, это простой текстовый файл, в котором каждая запись находится на отдельной строке. Пустые строки игнорируются, строки, начинающиеся с точки с запятой, игнорируются (это комментарии). Каждое правило состоит из трёх условий, которые располагаются на трёх строках. Сначала идёт имя класса окна, потом заголовок окна, а в самом конце - имя файла программы. Каждое правило должно быть заключено в кавычки. Если в кавычках пустота, то такое условие игнорируется программой. Вот пример объявления двух правил: "MyCoolProgramWindowClass" "Cool program v1.0" "cp.exe" "" "" "foobar2000.exe" Первое правило определяет все три условия. Второе же правило указывает только имя файла программы (остальные условия пусты). Все остальные условия будут проигнорированы. Таким образом, когда программа определяет, устанавливать в заголовок окна время или нет, она пытается применить все правила к окну. Если для какого-то правила все условия совпадут, окно будет проигнорировано, и время в него установлено не будет. Самый простой способ добавить что-то в исключения - внести только имя файла программы, как показано во втором правиле. Правда, при этом все окна программы попадут в исключения. Формат записи условия --------------------- Условия содержат некое подобие регулярного выражения, которое поддерживает оператор Like языка Visual Basic. Если вы ничего не поняли, то просто пишите строку как есть, только символы "[", "*", "#" и "?" всё равно придётся заключить в прямоугольные скобки. Например, эта строка: Do you like horny bunnies? [ver 1.2] Должна быть записана так: Do you like horny bunnies[?] [[]ver 1.2] В общем и целом, не сложно. Подробнее прочитать можно здесь: http://msdn.microsoft.com/en-us/library/swf8kaxw(VS.71).aspx http://www.devx.com/vb2themax/Tip/18578 Удаление -------- Удаление самой программы производится обычным способом - через Установку и удаление программ. Маленький копирайт ------------------ 1. Программа распространяется бесплатно. 2. Вы имеете право распространять её на тех же условиях. 3. При распространении вы не имеете права менять авторство программы, присваивать его себе или каким-либо иным способом искажать его. 4. Разрешено коммерческое использование программы (в офисе, на производстве) за исключением её платного распространения или сдачи в аренду. 5. Программа распространяется как есть. Автор не несёт ответственности за любые трагедии или несчастные случаи, вызванные использованием программы. 6. Вы имеете право использовать ActiveX компоненты, поставляемые с программой, в собственных программах. При этом автор не гарантирует совместимость будущих версий компонентов. 7. Для любого пункта данного соглашения может быть сделано исключение с разрешения автора программы. 8. По любым вопросам, связанным с данной программой, обращайтесь по адресу lindaoneesama@gmail.com Контакты -------- Почта: lindaoneesama@gmail.com Сайт: https://www.lindachan.net