PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » Случайная замена обоев


Случайная замена обоев

Сообщений 1 страница 3 из 3

1

Конечно это далеко не ново, но так чтобы здорово новичкам не искать, решил сюда запостить. Данный код выбирает случайный файл .bmp  в нужном каталоге и меняет обои  на рабочем столе. У меня этот код вмонтирован в одну из моих прог, запускаемых вместе с виндой, то есть получается при запуске системы постоянно вижу "отремонтированный" рабочий стол.

Код:
NewList OBOI.s() ; создаем список для файлов с обоями
If ExamineDirectory(0, GetCurrentDirectory()+"OBOI\", "*.bmp*")   ; ищем каталог с обоями 
  
  While NextDirectoryEntry(0)  ;считываем все имеющиеся файлы в формате .bmp
    AddElement(OBOI())     
    OBOI()= DirectoryEntryName(0) ; загоняем имена файлов в список
  Wend
  razmeroboi=ListSize(OBOI()) ; получаем размер листа
  FinishDirectory(0)
  SelectElement(OBOI(),Random(razmeroboi-1))   ; станавливаем случайную обоину
  SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, "OBOI\"+OBOI.s(), #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE) ; клеим обои
EndIf

0

2

Выпала свободная минута на работе, хотел запустить код,
Но не одной картинки в формате BMP нет...
И если программу использовать отдельно, наверно будет лучше при запуске
один раз указать директорию и сохранить её...

0

3

Для JPG :

Код:
Enumeration 
 #Ima
 #image
EndEnumeration
UseJPEGImageDecoder()

NewList OBOI.s() ; создаем список для файлов с обоями
If ExamineDirectory(0, GetCurrentDirectory()+"Природа\", "*.jpg*")   ; ищем каталог с обоями 
  
  While NextDirectoryEntry(0)  ;считываем все имеющиеся файлы в формате .jpg
    AddElement(OBOI())     
    OBOI()= DirectoryEntryName(0) ; загоняем имена файлов в список
  Wend
  razmeroboi=ListSize(OBOI()) ; получаем количество рисунков
  FinishDirectory(0)
  SelectElement(OBOI(),Random(razmeroboi-1))   ; устанавливаем случайную обоину
  
      
  x.f= GetSystemMetrics_(#SM_CXSCREEN) ; ширина монитора
  y.f=GetSystemMetrics_(#SM_CYSCREEN)  ; высота монитора
  LoadImage(#Ima, "Природа\"+OBOI.s())
   If CreateImage(#image, x.f, y.f)
    StartDrawing(ImageOutput(#image))
     DrawImage(ImageID(#Ima), 0, 0, x.f, y.f)
    StopDrawing()
    #file = "oooo.bmp" 
    SaveImage(#image, #file, #PB_ImagePlugin_BMP)
   EndIf
   
  SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, #file, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE) ; клеим обои
   DeleteFile("oooo.bmp")
EndIf

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

Отредактировано mirashic (28.09.2010 10:59:20)

0


Вы здесь » PureBasic - форум » OpenSource » Случайная замена обоев