Лог на фоне рабочего стола
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
Лог на фоне рабочего стола
Итак, данная задача выводит последние N строк файла в качестве фона рабочего стола.
Я знаю что есть тьма специальных прог, но мне просто было интересно написать такую задачу. Кроме того, я верю что многим пригодится маленький кусочек этой задачи - извлечение последних N строк из файла.
Сама задача очень проста и состоит из нескольких групп действий:
1. Сначала происходит установка всех необходимых переменных.
2. Затем извлечение последних N строк из лог-файла.
3. При помощи IrfanView извлечённые строки печатаются в bmp-файл и этот файл устанавливается фоном рабочего стола.
Задача нормально работает в WinXP Pro SP2, xStarter-1.9.1.87
Я знаю что есть тьма специальных прог, но мне просто было интересно написать такую задачу. Кроме того, я верю что многим пригодится маленький кусочек этой задачи - извлечение последних N строк из файла.
Сама задача очень проста и состоит из нескольких групп действий:
1. Сначала происходит установка всех необходимых переменных.
2. Затем извлечение последних N строк из лог-файла.
3. При помощи IrfanView извлечённые строки печатаются в bmp-файл и этот файл устанавливается фоном рабочего стола.
Задача нормально работает в WinXP Pro SP2, xStarter-1.9.1.87
- Вложения
-
- BackgroundInfo.xstk
- (9.15 КБ) 1222 скачивания
- За это сообщение автора LizardOfOzz поблагодарил:
- Alex (Пт май 16, 2008 9:35 pm)
- Рейтинг: 33.33%
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Лог на фоне рабочего стола
Для тех, кто сам не разобрался, дополнение: при выполнении задачи предполагается, что существует некий bmp-файл "[bmpfile].new" на фоне которого и выводится текст.
P.S.: Не понимаю, зачем надо было спрашивать в личке. Я ж могу и не заметить письма...
P.S.: Не понимаю, зачем надо было спрашивать в личке. Я ж могу и не заметить письма...
-
- Пассажир
- Сообщения: 13
- Зарегистрирован: Вт авг 28, 2007 8:23 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Лог на фоне рабочего стола
Спасибо, что быстро откликнулись. Но, к сожалению у меня все равно не получилось запустить задачу. Итак снова опишу мои действия по порядку, возможно, что где-то я сам ошибаюсь.
1. Скачал и установил саму задачу с форума.
2. Скачал и установил IrfanView
3. Создал в С папку playground
4. В действии "Прочитать из Лог файла1" указал путь к логфайлу.
5. В действии "Отрисовка текста в бмп" указал путь к начальному чистому бмп файлу
6. Запустил задачу....
Результат. Комп пошуршал винтом, сменил картину рабочего стола на другую и все...
Никаких логов и строк на фоне. В папке playground появился файл background.bmp и больше ничего. В логе самой задачи - все чисто выполнено, без ошибок. Где еще может надо чего-то указывать?
1. Скачал и установил саму задачу с форума.
2. Скачал и установил IrfanView
3. Создал в С папку playground
4. В действии "Прочитать из Лог файла1" указал путь к логфайлу.
5. В действии "Отрисовка текста в бмп" указал путь к начальному чистому бмп файлу
6. Запустил задачу....
Результат. Комп пошуршал винтом, сменил картину рабочего стола на другую и все...
Никаких логов и строк на фоне. В папке playground появился файл background.bmp и больше ничего. В логе самой задачи - все чисто выполнено, без ошибок. Где еще может надо чего-то указывать?
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Лог на фоне рабочего стола
А в файле background.bmp строки лога отрисованы?balu писал(а):Спасибо, что быстро откликнулись. Но, к сожалению у меня все равно не получилось запустить задачу. :( Итак снова опишу мои действия по порядку, возможно, что где-то я сам ошибаюсь.
1. Скачал и установил саму задачу с форума.
2. Скачал и установил IrfanView
3. Создал в С папку playground
4. В действии "Прочитать из Лог файла1" указал путь к логфайлу.
5. В действии "Отрисовка текста в бмп" указал путь к начальному чистому бмп файлу
6. Запустил задачу....
Результат. Комп пошуршал винтом, сменил картину рабочего стола на другую и все...
Никаких логов и строк на фоне. В папке playground появился файл background.bmp и больше ничего. В логе самой задачи - все чисто выполнено, без ошибок. Где еще может надо чего-то указывать?
4 и 5 пункты лишние. настраивать задачу надо при помощи переменных, иначе легко можно наделать ошибок.
-
- Пассажир
- Сообщения: 13
- Зарегистрирован: Вт авг 28, 2007 8:23 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Лог на фоне рабочего стола
нет, отрисованных строк в созданном бмп нет.
Поступил так: просто взял текстовый файл, поместил в каталог playground и переименовал его в background.txt. Теперь то правильно? Насчет указания пути к начальному чистому файлу бмп я не понял - как и где тогда его указывать, создавать переменную новую что ли? а разве если я просто вместо [bmpfile].new в этом окошке пишу путь к файлу с/каталог/файл, это не правильно? в логах задачи (подробных) - ни единой ошибки все "запущено" и "успешно выполнено". Может в irfane надо настройки какие-то еще писать? кстати irfan свежий и стартер веб пилот свежий. И еще в корневом каталоге irfan есть файл .ini, открыл его блокнотом, и там в строке add text увидел последнюю строчку из своего лога! значит задача читает лог и совершает с ним операцию в irfan, однако получающийся bmp чист.
Поступил так: просто взял текстовый файл, поместил в каталог playground и переименовал его в background.txt. Теперь то правильно? Насчет указания пути к начальному чистому файлу бмп я не понял - как и где тогда его указывать, создавать переменную новую что ли? а разве если я просто вместо [bmpfile].new в этом окошке пишу путь к файлу с/каталог/файл, это не правильно? в логах задачи (подробных) - ни единой ошибки все "запущено" и "успешно выполнено". Может в irfane надо настройки какие-то еще писать? кстати irfan свежий и стартер веб пилот свежий. И еще в корневом каталоге irfan есть файл .ini, открыл его блокнотом, и там в строке add text увидел последнюю строчку из своего лога! значит задача читает лог и совершает с ним операцию в irfan, однако получающийся bmp чист.
Последний раз редактировалось balu Ср сен 17, 2008 8:36 pm, всего редактировалось 2 раза.
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
-
- Пассажир
- Сообщения: 13
- Зарегистрирован: Вт авг 28, 2007 8:23 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Лог на фоне рабочего стола
дык делал я сначала так. и сейчас сделал вроде... насчет bmp чистого, где путь указывать?LizardOfOzz писал(а):А переменная [txtfile] для чего?
-
- Пассажир
- Сообщения: 13
- Зарегистрирован: Вт авг 28, 2007 8:23 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Лог на фоне рабочего стола
Вот здесь я путь к бмп файлу и указываю. В результате фон рабочего стола меняется на этот самый файл и все. Созданный [bmpfile] чист. Не пинайте меня сильно ногами, но я вообще не понял, как [bmpfile].new забирается на обработку в irfan. Ведь именно этот файл теоретически обрабатываться должен ifran и копироваться в просто [bmpfile], который в свою очередь в последнем действии задачи выводится в качестве фона. Так что делать? помогите плиз, уж нужна очень ваша задачка, весьма полезная для меня...LizardOfOzz писал(а):Для тех, кто сам не разобрался, дополнение: при выполнении задачи предполагается, что существует некий bmp-файл "[bmpfile].new" на фоне которого и выводится текст.
- yarunya
- Ас
- Сообщения: 143
- Зарегистрирован: Чт авг 28, 2008 1:09 pm
- Откуда: Украина
- Благодарил (а): 5 раз
- Поблагодарили: 4 раза
- Контактная информация:
Re: Лог на фоне рабочего стола
Интересная задача! У меня есть большая просьба: LizardOfOzz можешь как-то обновить данную тему, для более подробного описания задачи... Я конечно умственно не слаб, но толком понять так и не смог, что к чему. Ведь с помощью такой задачи можно создавать целые статистические обои! Заранее благодарен...
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Лог на фоне рабочего стола
А какая часть алгоритма не понятна?yarunya писал(а):Интересная задача! У меня есть большая просьба: LizardOfOzz можешь как-то обновить данную тему, для более подробного описания задачи... Я конечно умственно не слаб, но толком понять так и не смог, что к чему. Ведь с помощью такой задачи можно создавать целые статистические обои! Заранее благодарен...
- yarunya
- Ас
- Сообщения: 143
- Зарегистрирован: Чт авг 28, 2008 1:09 pm
- Откуда: Украина
- Благодарил (а): 5 раз
- Поблагодарили: 4 раза
- Контактная информация:
Re: Лог на фоне рабочего стола
Я так понял... Ирфан как-то обрабатывает свой ини, и при создании рисунка вписывает в него данные из него? Мы просто подставляем свои значения? Как называется раздел в котором будет текст? Не BatchText случайно? Как создать чистый бмпшник? Просто в фотошопе создать пустой док и сохранить его как бмп? Или как-то по-другому...
И что это такое [bmpfile].new? Откуда он берется... У меня только ошибку выкидает что мол не доступа на запись...
Вот мой ини...
И что это такое [bmpfile].new? Откуда он берется... У меня только ошибку выкидает что мол не доступа на запись...
Вот мой ини...
Код: Выделить всё
[Language]
DLL=ENGLISH
Lang=English
[Toolbar]
Skin=Grosberg_24.png
Size=24
[JPEG]
Load Grayscale=0
ExifRotate=1
[PhotoCD]
Loading Size=3
[MultiGIF]
PlayAnimation=1
UseSingleTrans=0
[Viewing]
ShowFullScreen=1
WMult=100
HMult=100
TxtPos=0
TxtAlign=0
FSResample=1
FSAlpha=0
MultimonStretch=0
ShowFullScreenName=1
FullBackColor=0
HideCursor=0
FullText=$D$F $X
TranspText=1
FontColor=65280
TxtBgkr=16777215
FontParam=-13|0|0|0|400|0|0|0|0|1|2|1|49|
Font=Courier
[Others]
PropPage=4
[Open]
OpenIndex=1
OpenDir=D:\!Foto\Home\1\
[WinPosition]
xKoord=0
yKoord=0
Width=1015
Height=870
Maximized=0
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Лог на фоне рабочего стола
Итак, ещё раз, подробно и по-порядку. Решил повторить все этапы с нуля, благо под рукой была чистая система.
P.S.: В процессе изучения, задачу я переписал.
Работает в WinXP SP2, xstarter-1.9.2.81, irfanview-4.20
- Приготовления.
- Ставим стартер.
- Ставим iview (к сожалению, последние версии iview пытаются поставить вместе с собой панель yahoo. так что обращаем внимание на галочки при установке!).
- Импортируем задачу в стартер.
- Настраиваем задачу под конкретную систему. Переменные я перенёс на вкладку vars.
- Пути:
- [p_iview] - путь до экзешника irfanview, который вызывается в процессе выполнения задачи.
- [p_settings] - путь до файла настроек irfanview. Для добавления текста в картинку используется фича из режима пакетной обработки ирфана.
Поэтому для впечатывания каждой строки приходится отдельно вызывать запуск iview с новыми параметрами в ini-файле. - [p_logfile] - файл со строками для отображения.
- [p_original] - исходная картинка, в которую будет добавлен текст. При каждом запуске этот файл копируется в [p_result] для сброса изменений, внесённых в прошлый раз.
- [p_result] - файл, который станет фоном рабочего стола.
Параметры: - [N] - количество строк, которые будут считаны из хвоста лог-файла и отображены на картинке.
- [H] - высота строки. (влияет на расстояние между строками лога на картинке)
- [W] - ширина строки.
- [X] и [Y] - смещение блока текста на картинке. (важно помнить, что эти значения могут отсчитываться от разных углов. зависит от настроек irfanview)
- Надо создать файл, который станет фоном для лога. Я предпочитаю пустую чёрную bmp-шку, размером с рабочий стол по следующим причинам:
- При отображении тратится мало ресурсов системы.
- Нет искажений изображения при многократной обработке файла во время впечатывания в него строк лога.
- Сразу после установки iview в его конфиге нету настроек для пакетного режима. Поэтому задача рисовать ничего не будет.
- Вариант 1 - настроить этот режим вручную.
Меню "Файл\Преобразовать-переименовать группу файлов..."
В открывшемся диалоге ставим галку на "с дополнительными параметрами" и давим на кнопку "параметры" напротив.
Затем, в секции "разное" ставим галку "нанести текст на изображение" и настраиваем параметры текста. Сохраняем. Запускать обработку не надо. - Вариант 2 - тупо дописать нужную секцию в конфиг:
Я подозреваю что не все параметры нужны, но разбираться в них лень.
Код: Выделить всё
[BatchText] AddText=для проверки TextCoord=400;60;1000;80; Corner=0 Orientation=0 TranspText=1 FontColor=65280 TxtBgkr=16777215 FontParam=-13|0|0|0|400|0|0|0|0|1|2|1|49| Font=Courier [Batch] AdvCrop=0 AdvCropX=0 AdvCropY=0 AdvCropW=0 AdvCropH=0 AdvCropC=0 AdvResize=0 AdvResizeOpt=0 AdvResizeW=0.00 AdvResizeH=0.00 AdvResizeL=0.00 AdvResizeS=0.00 AdvResample=0 AdvResizePerc=0 AdvResizePercW=0 AdvResizePercH=0 AdvDPI=0 AdvResizeUnit=0 AdvResizeRatio=0 AdvNoEnlarge=0 AdvCanvas=0 AdvAddText=1 AdvUseBPP=0 AdvBPP=0 AdvUseFSDither=1 AdvAutoRGB=0 AdvHFlip=0 AdvVFlip=0 AdvRLeft=0 AdvRRight=0 AdvGray=0 AdvInvert=0 AdvSharpen=0 AdvGamma=0 AdvContrast=0 AdvBrightness=0 AdvSaturation=0 AdvColR=0 AdvColG=0 AdvColB=0 AdvSharpenVal=1 AdvGammaVal=0.00 AdvContrastVal=0 AdvBrightnessVal=0 AdvSaturationVal=0 AdvColRVal=0 AdvColGVal=0 AdvColBVal=0 AdvDelOrg=0 AdvOverwrite=0 AdvSubdirs=0 AdvSaveOldDate=0 AdvAllPages=1 AdvFineR=0 AdvFineRVal=0.00 AdvBlur=0 AdvBlurVal=1 AdvMedian=0 AdvMedianVal=3 AdvRbg=0 AdvBgr=0 AdvBrg=0 AdvGrb=0 AdvGbr=0 AdvAutoCrop=0
- Вариант 1 - настроить этот режим вручную.
- Кроме того следует обратить внимание, что изменение этих настроек не отслеживается в задаче, так что при активной работе с iview вполне можно затронуть стиль отображения лога на экране. (например, изменив шрифт и цвет текста в настройках пакетного режима обработки).
P.S.: В процессе изучения, задачу я переписал.
Работает в WinXP SP2, xstarter-1.9.2.81, irfanview-4.20
- Вложения
-
- BackgroundInfo2.xstk
- (15.73 КБ) 784 скачивания
- LizardOfOzz
- Гвардии пилот - Наставник
- Сообщения: 1165
- Зарегистрирован: Пт сен 08, 2006 8:59 pm
- Благодарил (а): 8 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Лог на фоне рабочего стола
А вот логика работы:
В первой части просто проверяются некоторые переменные. Сказывается программистское прошлое... =)
-------------------------------------------------------------------------------------------------------------------------------------------------
Во второй части извлекаются последние N строк файла и пихаются в текстовую переменную.
Тут надо учесть следующие моменты:
----------------------------------------------------------------------------------------------------------------------------------------------------
Третья секция - отрисовка строк.
В первой части просто проверяются некоторые переменные. Сказывается программистское прошлое... =)
-------------------------------------------------------------------------------------------------------------------------------------------------
Во второй части извлекаются последние N строк файла и пихаются в текстовую переменную.
Тут надо учесть следующие моменты:
- Насколько я понимаю, действие "ReadFromLog" загружает файл в память. А т.к. без ротации логи легко достигают гигабайтных размеров, это может стать проблемой. Решение - искать аналог программы tail из unix.
- В зависимости от того, что написано в "SetVariable6", строки могут отображаться в прямом и обратном порядке.
Прямой порядок:Обратный порядок (удалять первую пустую строку мне было лень):Код: Выделить всё
[GetTextBlockN1.TextBlock][ENTER][text]
Код: Выделить всё
[text][ENTER][GetTextBlockN1.TextBlock]
- Читаем лог-файл
- Считаем сколько в нём строк
- Дальше идёт реализация цикла for-to-do на основе цикла while-not:
Сначала инициализация переменных.
Тело цикла:- Вычисление номера очередной строки. Т.к. параметр цикла (i) возрастает, строки извлекаются в обратном порядке.
- Добавление очередной строки в переменную text.
- Вычисление следующего значения параметра цикла.
- Запись этого значения в переменную. (иногда мне кажется, что после стартера можно смело садиться за asm. вот только регистры выучить надо)
- Проверка условия выхода из цикла (i >= N). Больше либо равно тут из-за того, что i инициализируется нулём. Что, в свою очередь, нужно для того, чтобы корректно вычислялся индекс самой последней строки (который равен количеству строк минус ноль).
----------------------------------------------------------------------------------------------------------------------------------------------------
Третья секция - отрисовка строк.
- Вычисление базовой директории для экзешника iview.
- Очистка файла. Просто копируем поверх чистую картинку.
- Для каждой строки из переменной text делаем следующее:
- Записываем текст строки в инишку IrfanView
- Вычисляем координаты надписи.
- Индекс строки - 1 (это значение пригодится чуть позже)
- Индекс строки * высота строки = нижняя граница прямоугольной области с текстом.
- (Индекс строки - 1 ) * высота строки = верхняя граница прямоугольной области с текстом.
- X + W = правая граница прямоугольной области с текстом. По-хорошему, это действие надо вынести за цикл. При этом X - левая граница бла-бла-бла.
- Записываем эти координаты в инишку.
- Запускаем irfanview с тем, чтобы он отрисовал очередную строку.
- Теперь заставляем irfanview обновить обои рабочего стола.
- За это сообщение автора LizardOfOzz поблагодарили (всего 2):
- Anton5 (Сб фев 14, 2009 10:44 pm) • yarunya (Сб фев 14, 2009 10:44 pm)
- Рейтинг: 66.67%
- yarunya
- Ас
- Сообщения: 143
- Зарегистрирован: Чт авг 28, 2008 1:09 pm
- Откуда: Украина
- Благодарил (а): 5 раз
- Поблагодарили: 4 раза
- Контактная информация:
-
- Командир экипажа
- Сообщения: 80
- Зарегистрирован: Вт июн 17, 2008 8:04 am
- Благодарил (а): 5 раз
- Поблагодарили: 0
Re: Лог на фоне рабочего стола
Попрбовал записать в лог файл русский текст, он не выводится. Если писать по английски, то всё отлично работает.
Такой глюк только уменя или выводить русский текст неполучится?
Такой глюк только уменя или выводить русский текст неполучится?