Найти в Дзене
Junior Coder

Как программно поменять обои на рабочем столе компьютера.

Открывая свой блог, хочу предложить вам попробовать себя в роли программистов.

В планах у меня выкладывать периодически небольшие программы, которые, думаю должны

быть интересны тем, кто хочет познакомиться с компьютерным кодом и узнать о возможностях

компьютера, которые доступны только разработчикам кода.

Все программы будут написаны мной, что позволяет утверждать о их некоторой 

эксклюзивности (хотя на просторах интернета можно найти, не сомневаюсь, большие по

возможностям и лучшие по качеству работы.)

Представленная здесь программа простенький аналог виндоусовской карусели слайдов

которая меняет обои на рабочем столе. 

Скопируйте (или лучше перепечатайте) код в любой с++ редактор, например DevC++, MinGW-w64,

Codelite, я, например, предпочитаю Codeblock, затем откомпилируйте его, думаю с этим у вас

проблем не возникнет - все современные редакторы очень дружелюбны для начинающих пользователей,

готовую программу поместите в папку с несколькими фотографиями и запустите ее. Можно создать 

ярлык программы и добавить в автозагрузку, тогда программа будет автоматически запускаться

при старте компьютера.

Помните о пунктуации - каждая точка и запятая важна в коде. Удачи!

/* C++

ReplakcDesktopPicture

Autor: Ruslan Imangulov 04.01.2022 */

//это начало кода

(знак решетки) include <iostream>//Подключаем необходимые библиотеки

(знак решетки) include <windows.h>//

(знак решетки) include <cstdlib>//

(знак решетки) include<time.h>//

using std::cout;//Вместо объявления отдельных операторов

using std::endl;//можно подключить всё пространство имен std

using std::wcout;//одной записью "using namespace std;"

//но при этом увеличится вес самой программы

int randomize();//используемые функции в программе, надо обязательно

//объявить в начале кода

main()//основная функция обязательна для всех программ

{

  setlocale(LC_ALL, ".OCP");//необходима для правильного отображения кириллицы

  HWND hwnd = GetConsoleWindow();//узнаем "хэндл" окна

  SYSTEMTIME systm;//объявляем функцию системного времени

  ShowWindow(hwnd, SW_MINIMIZE);//сворачиваем окно после запуска программы

  system("color 0a");//меняем цвет текста на ярко-зеленый (приятнее для восприятия)

  char curr_dir[MAX_PATH];//объявляем переменную типа char, MAX_PATH - полный путь

  GetCurrentDirectory(sizeof(curr_dir), curr_dir);//узнаем текущую директорию

  lstrcat(curr_dir,"\\*.jpg*");//если вы ищите картинки, то вам надо использовать

                //расширение *.png*, также нужно проследить за тем,

// чтобы расширение было не *.jpeg*, а *.jpg*

  WIN32_FIND_DATA find_jpg;//объявляем функцию поиска

  HANDLE hFile;//это управляющий хэндл

  int i = 0, a;//объявляем числовые переменные

  a = randomize();//присваеваем переменной случайное число

  while(1)//объявляем бесконечный цикл

  {

    if((hFile = FindFirstFile(curr_dir, &find_jpg)) != 0)//начинаем поиск

    {

      do

      {

        if(i == a)//если равно

        {

          int hour, minute;//переменные для отображения текущего времени

          GetSystemTime(&systm);//получаем системное время

          hour = systm.wHour;//часы

          minute = systm.wMinute;//минуты

          SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, find_jpg.cFileName,

                    SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);//меняем обои

          if(hour < 10)//чтобы время на зкране выглядело эстетичнее

          cout << "0";//устанавливаем перед однозначными значениями цифру "0"

          cout << hour << ":";//выводим часы на экран

          if(minute < 10)//тоже делаем с минутами

          cout << "0";//

          wcout << minute <<"\tТекущее фото: "<< find_jpg.cFileName << endl;//минуты и имя файла

          Sleep(75);//устанавливаем задержку, вы можете изменить ее по своему усмотрению

          i = 0;//сбрасываем i на ноль

          a = randomize();// присваиваем новое случайное значение

        }

        i++;//увеличиваем i на один (операция инкримента)

      }

      while(FindNextFile(hFile, &find_jpg));//ищем следующее фото

      FindClose(hFile);//закрываем поиск

    }

else

{

wcout << "Фотографии не найдены!" << endl;//если фоток нет

system("pause");//то увы, останавливаем программу

break;// и выходим из цикла

}

  }

  return 0;//дань традиции

}

int randomize()//функция поиска случайных чисел

{

  SYSTEMTIME systm;

  GetSystemTime(&systm);

  srand((unsigned)time(NULL));

  int number = 0;

  int tm;

  tm = systm.wMilliseconds;

  number = (rand() + tm) % 13 ;//число 13 желательно заменить на равное количеству фото в папке

  return number;//возвращаемое случайное число

}

//это конец кода