|
Программирование >> Автоматически обновляемые приложения
Примечание Пример работы с элементами Рабочего стола находится в папке Task-BarAPI на прилагаемом диске. Смена обоев Рабочего стола Если вы хотите периодически менять картинку на своем Рабочем столе, то можете это сделать программным способом прямо из своего приложения. Для смены обоев Рабочего стола вызывается одна функция Windows API SystemParametersInfo. ОбщиЙ приНЦИП СМенЫ обоев НС СЛОЖеН. Во-первЫХ, вам нужно знать путь к изображению, которое будет служить новыми обоями Рабочего стола. Выбранная картинка должна быть в формате BMP, поэтому вам может понадобиться сохранить любимую фотографию в формате JPG в нужном формате при помощи метода Save класса Bitmap. Во-вторых, нужно внести некоторые изменения в реестр. Картинку можно использовать в качестве обоев тремя способами: по центру экрана, растянуть на весь экран или замостить Рабочий стол. После этих приготовлений можно вызывать функцию SystemParametersInfo, которая установит новую картинку В качестве case ABS AUTOHIDE: MessageBox.Show( Автоматически убирать с экрана ); break; case ABS ALWAYSONTOP: MessageBox.Show( Всегда на экране ); break; case ABS BOTH: MessageBox.Show( Включена опция Автоматически убирать + с экрана и Показывать всегда поверх окон ); break; Получим позицию Панели задач SHAppBarMessage (ABM GETTASKBARPOS, ref bardata); Получим координаты ограничивающего прямоугольника MessageBox.Show( Координаты Панели задач: ( + bardata.ГС.left + , + bardata.rc.top + ) + bardata.rc.right + , + bardata.rc.bottom + ) ); Листинг 17.23. Устаиоека обоев Рабочего стола . using System.Runtime.InteropServices; using Microsoft.Win32; [Dlllmport( user32.dll , CharSet = CharSet.Auto)] static extern int SystemParametersInfо( int uAction, int uParam, string IpvParam, int fuWinIni); Константы const int SPI SETDESKWALLPAPER = 20; const int SPIF UPDATEINIFILE = 0x01; const int SPIF SENDWININICHANGE = 0x02; public enum WallpaperStyle : int { Tiled, Centered, Stretched private void Forml Load(object sender, EventArgs e) { связываем комбинированное окно с перечислением WallpaperStyle cboStyleWallpaper.DataSource = System.Enum.GetNames(typeof(WallpaperStyle)) ; private void butSetWallpaper Click(object sender, EventArgs e) { string imageFileName; imageFileName = Application.StartupPath + /mycat.bmp ; RegistryKey key = Registry.CurrentUser.OpenSubKey( Control PanelWDesktop , true); WallpaperStyle style; style = (WallpaperStyle)Enum.Parse(typeof(WallpaperStyle), CboStyleWallpaper.Text); обоев Рабочего стола. Для упрощения примера (листинг 17.23) я жестко прописал путь к картинке. switch (style) { case WallpaperStyle.Stretched: key.SetValue(@ WallpaperStyle , 2 ); key.SetValue(@ TileWallpaper , 0 ); break; case WallpaperStyle.Centered: key.SetValue(@ WallpaperStyle , 1 ); key.SetValue(@ TileWallpaper , 0 ); break; case WallpaperStyle.Tiled: key.SetValue(@ WallpaperStyle , 1 ); key.SetValue(@ TileWallpaper , 1 ); break; SystemParametersInfo(SPI SETDESKWALLPAPER, 0, imageFileName, SPIF UPDATEINIFILE SPIF SENDWININICHANGE), Рис. 17.2. Установка новых обоев на Рабочем столе
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |