Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:40

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Задание nnCron для периодической смены обоев рабочего стола
СообщениеДобавлено: Вт май 08, 2007 18:40 
Вот примерно так я теперь меняю обои на рабочем столе (сегодня нашло что-то) 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'а изменить интервал срабатывания задачи "менять-обои".

Честное предупреждение: там иногда вылезает ошибка какая-то, что там насчёт того что указатель файла устанавливается раньше начала файла (??). Не могу воспроизвести и понять...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 12:20 
Ошибку вроде понял. Там у меня была папка с длиннющим названием (под 200 символов). Убрал её -- ошибок не стало. Сидит, работает.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB