Forth http://www.fforum.winglion.ru/ |
|
Задание nnCron для периодической смены обоев рабочего стола http://www.fforum.winglion.ru/viewtopic.php?f=20&t=715 |
Страница 1 из 1 |
Автор: | profiT [ Вт май 08, 2007 18:40 ] |
Заголовок сообщения: | Задание nnCron для периодической смены обоев рабочего стола |
Вот примерно так я теперь меняю обои на рабочем столе (сегодня нашло что-то) nnCron'ом. Добавлять в конец crontab.ini: Код: <%
\ Когда меняете параметры проверяйте что между S" и началом значения чтобы ОБЯЗАТЕЛЬНО был пробел \ Путь до irfanView (http://www.irfanview.com/) : irfanViewPath S" c:\Program Files\irfanView\i_view32.exe" ; \ Папка, куда записаны ваши обои (обратите внимание, что обои берутся и из вложенных папок!) : wallpapersDir S" E:\fun pix\potter\order of phoenix\" ; \ Если обоя не влезает в экран, то её надо подгонять \ Это соотношение обозначает что размер у подогнанной обои будет \ семь восьмых к размеру экрана (изменяемо, само собой) : wallPaperFraction ( -- a b ) 7 8 ; \ Тут надо указать название файла какого не жалко (это промежуточный файл, он будет затираться) \ Можно оставить и по умолчанию : picInfoIni S" c:\1.ini" ; \ А вот это не трогать : imageDimensions S" Image dimensions = " ; \ Это тоже не трогать (пробелы не резать!..) : buf ( -- addr u ) S" " 2 - ; %> #( менять-обои Time: */5 * * * * * Action: 0 FILESONLY RECURSIVE FOR-FILES: "%wallpapersDir%\*" 1+ ;FOR-FILES RANDOM 0 FILESONLY RECURSIVE FOR-FILES: "%wallpapersDir%\*" 2DUP = IF FILE-DELETE: "%picInfoIni%" SWHide START-APPW: "%QUOTE%%irfanViewPath%%QUOTE% %QUOTE%%FOUND-FULLPATH%%QUOTE% /info=%picInfoIni% /killmesoftly /silent /hide=15" FILE-EXIST: "%picInfoIni%" IF picInfoIni R/O OPEN-FILE-SHARED THROW BEGIN DUP buf ROT READ-LINE THROW WHILE DROP buf DROP imageDimensions NIP imageDimensions COMPARE 0= IF buf DROP imageDimensions NIP + ASCIIZ> 0. 2SWAP >NUMBER SWAP 3 + SWAP 0. 2SWAP >NUMBER 2DROP D>S ROT ROT D>S ( width height ) 2DUP > IF DROP TRUE ELSE NIP FALSE THEN 0= WIN-EXIST: "Progman" IF \ выводим координаты окна Program Manager WIN-HWND WIN-RECT 2DROP ROT IF NIP wallPaperFraction */ MIN START-APP: "%QUOTE%%irfanViewPath%%QUOTE% %QUOTE%%FOUND-FULLPATH%%QUOTE% /killmesoftly /silent /hide=15 /resample=(%0 esPICK%,0) /aspectratio /wall=0" ELSE DROP wallPaperFraction */ MIN START-APP: "%QUOTE%%irfanViewPath%%QUOTE% %QUOTE%%FOUND-FULLPATH%%QUOTE% /killmesoftly /silent /hide=15 /resample=(0,%0 esPICK%) /aspectratio /wall=0" THEN ELSE DROP THEN THEN REPEAT DROP CLOSE-FILE THROW ELSE SWAP 1+ SWAP THEN THEN 1+ ;FOR-FILES 2DROP )# Обои меняются функцией irfanView (хотя я первоначально делал через WinAPI, но потом всё равно к irfanView пришлось обращаться из-за необходимости в изменении размеров). Если обоя больше экрана, то размер подгоняется. Есть и алгоритм: сначала у обои определяется что больше: ширина или высота, затем если эта размерность не влезает в экран то она подгоняется под размер экрана в соотношении семь восьмых (чтобы одна восьмая экрана осталось как бы рамкой). Вначале текстом описаны параметры. Можно-нужно их менять. Также можно уже через интерфейс nnCron'а изменить интервал срабатывания задачи "менять-обои". Честное предупреждение: там иногда вылезает ошибка какая-то, что там насчёт того что указатель файла устанавливается раньше начала файла (??). Не могу воспроизвести и понять... |
Автор: | profiT [ Сб май 19, 2007 12:20 ] |
Заголовок сообщения: | |
Ошибку вроде понял. Там у меня была папка с длиннющим названием (под 200 символов). Убрал её -- ошибок не стало. Сидит, работает. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |