Меню

Delphi как изменить рабочий стол



Delphi как изменить рабочий стол

Как программно изменить фон рабочего стола? Хотелось бы взять картинку из image.


Eraser © ( 2005-08-03 12:10 ) [1]

Irinka © (03.08.05 10:58)

var Wallpaper : string;
begin
Wallpaper := «C:\windows\ACD Wallpaper.bmp»;
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
end;

Как установить обои в формате jpeg.
SystemParametersInfo только для bmp.

uses
ComObj, ShlObj;

procedure ChangeActiveWallpaper;
const
CLSID_ActiveDesktop: TGUID = «<75048700-EF1F-11D0-9888-006097DEACF9>«;
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
ActiveDesktop.SetWallpaper(«c:\windows\forest.jpg», 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;


Irinka © ( 2005-08-03 14:21 ) [2]

спасибо, Eraser , но этот метод меняет картинку только на время, т.е. при перемещении окна фон остается прежним. 🙁
Однако, я нашла способ действительно поменять картинку рабочего стола:

var
Reg: TRegIniFile;
begin

Reg := TRegIniFile.Create(«Control Panel»);
Reg.WriteString(«desktop», «Wallpaper», «c:\windows\Установка.jpg»);
Reg.WriteString(«desktop», «TileWallpaper», «0»);
Reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);

Только в этом случае возникает другой вопрос: Как немедленно перерисовать DeskTop? (Как и какое сообщение нужно послать, чтобы система знала, что необходимо обновить картинку рабочего стола?)


Eraser © ( 2005-08-03 14:29 ) [3]

Irinka © (03.08.05 14:21) [2]
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);

___
uses Registry

var
Reg: TRegIniFile;
begin

Reg := TRegIniFile.Create(«Control Panel»);
Reg.WriteString(«desktop», «Wallpaper», «c:\windows\Установка.jpg»);
Reg.WriteString(«desktop», «TileWallpaper», «0»);
Reg.Free;

var Wallpaper : string;
begin
Wallpaper := «C:\windows\ACD Wallpaper.bmp»;
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
end;

Думаю мысль понятна? )


Irinka © ( 2005-08-03 14:44 ) [4]

Втом-то и дело, что не обновляется картинка сразу. Хотя когда откраваешь свойства рабочего стола, нужная картинка на месте, а экран не перерисовался. Как сделать чтобы он сразу перерисовывался.

Irinka © (03.08.05 14:44) [4]

Всё прекрасно обновляется, только проверил:
procedure TForm1.Button1Click(Sender: TObject);
var
Wallpaper : string;
begin
if OpenDialog1.Execute then
begin
Wallpaper := OpenDialog1.FileName;
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
end;
end;

Прибавь сюда ещё
uses Registry

var
Reg: TRegIniFile;
begin

Reg := TRegIniFile.Create(«Control Panel»);
Reg.WriteString(«desktop», «Wallpaper», «c:\windows\Установка.jpg»);
Reg.WriteString(«desktop», «TileWallpaper», «0»);
Reg.Free;


Irinka © ( 2005-08-04 05:09 ) [6]

Я это делаю в windows 2000, а вы?


Eraser © ( 2005-08-04 13:39 ) [7]

Irinka © (04.08.05 05:09) [6]

А вы случайно не jpg файлы пытаетесь поместить на рабочий стол?
Пример работает только для bmp.


Irinka © ( 2005-08-04 14:37 ) [8]

с jpg, а нет способа сделать фоном рабочего стола jpg файл?

Читайте также:  Как узнать свой размер рабочего стола


Irinka © ( 2005-08-04 14:48 ) [9]

А точнее любой (bmp или jpg) файл?

Irinka © (04.08.05 14:37) [8]

с jpg, а нет способа сделать фоном рабочего стола jpg файл?

Для этого перед помещением картинки на раб. стол её нужно преобразовать в bmp.
см. TJPEGImage из модуля Jpeg.


Irinka © ( 2005-08-29 05:47 ) [11]

Все решила гораздо проще: оставила свой код обновления рабочего стола, затем сначала выключила, а за тем включила ActiveDesktop и у меня тут же обновилась картинка на рабочем столе 🙂

Источник

Клуб программистов

Delphi programming

Подписаться на рассылку:

Рабочий стол.

Итак, Рабочий стол- это первое что мы видим после загрузки пользователя. Сначала я дам код, как изменить фоновый рисунок на Столе. Вот что надо написать:

Uses ShlObj, ComObj;

procedure ChangeWallpaper;
const
CLSID_ActiveDesktop: TGUID = ‘<75048700-EF1F-11D0-9888-006097DEACF9>‘;
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
as IActiveDesktop;
ActiveDesktop.SetWallpaper(‘Путь к файлу’, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;

Затем в нажатии на кнопку пишем:

procedure TForm1.ButtonClick(Sender: TObject);
begin
ChangeWallpaper;
end;

Всё, с первым пунктом покончено. Второе, как скрыть иконки на рабочем столе:

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(FindWindow(nil, ‘Program Manager’), SW_HIDE);//Скрыть
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowWindow(FindWindow(nil, ‘Program Manager’), SW_SHOW); //Показать
end;

Всё элементарно. Третье, как зазумить часть Стола. Нам понадобиться Timer, Image:

private
procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
public

procedure TForm1.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
begin
inherited;
Msg.MinMaxInfo^.ptMinTrackSize := Point(158, 177); // Минимальный размер формы
Msg.MinMaxInfo^.ptMaxTrackSize := Point(350, 350); // Максимальный размер формы
end;

Теперь в процедуре изменения размеров формы пишем:

procedure TForm1.FormResize(Sender: TObject);
begin
Image1.Picture:=nil;
end;

И обязательно при уничтожении:

procedure TForm1.FormDestroy(Sender: TObject);
begin
Timer1.Interval:=0;
end;

И финал пишем в таймере:

procedure TForm1.Timer1Timer(Sender: TObject);
var
Srect,Drect,PosForme:TRect;
FWidth,FHeight,X,Y:Integer;
TmpX,TmpY:Real;
CanvasX:TCanvas;
Kursor:TPoint;
begin
// Увеличиваем экран, если приложение не свёрнуто
If not IsIconic(Application.Handle) then begin
GetCursorPos(Kursor);// Координаты курсора
PosForme:=Rect(Form1.Left,Form1.Top,Form1.Left+Form1.Width,Form1.Top+Form1.Height);
If not PtInRect(PosForme,Kursor) then begin

If Panel1.Visible=True then Panel1.Visible:=False;
If Image1.Visible=False then Image1.Visible:=True;

// Далее код можно использовать для увеличения выбранной части экрана.
FWidth:=Image1.Width;
FHeight:=Image1.Height;
Drect:=Rect(0,0,FWidth,FHeight);
//zoom
TmpX:=FWidth / (TrackBar1.Position * 4);
TmpY:=FHeight / (TrackBar1.Position * 4);

Srect:=Rect(Kursor.x,Kursor.y,Kursor.x,Kursor.y);
InflateRect(Srect,Round(TmpX),Round(TmpY));
// move Srect if outside visible area of the screen
If Srect.Left Screen.Width then OffsetRect(Srect,-(Srect.Right-Screen.Width),0);
If Srect.Bottom>Screen.Height then OffsetRect(Srect,0,-(Srect.Bottom-Screen.Height));

CanvasX:=TCanvas.Create; //Получаем handle окна рабочего стола.
try
CanvasX.Handle:=GetDC(GetDesktopWindow);
Image1.Canvas.CopyRect(Drect,CanvasX,Srect); //Передаём часть изображения в TImage.
finally
CanvasX.Free;
end;
If CheckBox1.Checked=True then begin
with Image1.Canvas do begin
X:=TrackBar1.Position * 2 * (Kursor.X-Srect.Left);
Y:=TrackBar1.Position * 2 * (Kursor.Y-Srect.Top);
MoveTo(X — (FWidth div 4),Y);
LineTo(X + (FWidth div 4),Y);
MoveTo(X,Y — (FHeight div 4));
LineTo(X,Y + (FHeight div 4));
end;
end;
Application.ProcessMessages; // Это чтобы Windows не повис.
end
else begin
If Panel1.Visible=False then Panel1.Visible:=True;
If Image1.Visible=True then Image1.Visible:=False;
end;
end;
end;

Читайте также:  Как собрать стол икеа bjursta

Исходник к последней части качать здесь (8,83 КБ) >>

Источник

Настройка Рабочего стола

Настройка Рабочего стола

Сокрытие всех элементов Рабочего стола

Похожие главы из других книг:

Настройка темы Рабочего стола

Настройка темы Рабочего стола Понятие темы включает в себя оформление заголовков окон, фоновый рисунок, экранную заставку, набор шрифтов, системных звуков, значков и указателей мыши. По умолчанию в Windows Vista предлагается две темы: Windows Vista, которая выбирается автоматически

Глава 29 Куб рабочего стола

Глава 29 Куб рабочего стола Куб рабочего стола — это самый популярный и один из самых зрелищных, хоть и достаточно бесполезных, плагинов Compiz. С его помощью можно создать из рабочих столов кубик, который красиво вращается с разнообразными графическими эффектами.Итак, для

Гаджеты рабочего стола

Гаджеты рабочего стола Как уже говорилось выше, гаджеты – маленькие программы, размер окна которых позволяет размещать их на Рабочем столе без особого ущемления прав других приложений.Гаджеты могут иметь разное назначение, например, с их помощью можно узнавать прогноз

7.1. Тема Рабочего стола

7.1. Тема Рабочего стола Визуальное оформление Рабочего стола – первое, что бросается в глаза после запуска операционной системы. Как говорится, «встречают по одежке», и именно этот факт влияет на то, сможете ли вы в дальнейшем с удовольствием пользоваться операционной

7.2. Фон Рабочего стола

7.2. Фон Рабочего стола Фон Рабочего стола как составную часть темы также в любой момент можно изменить. Например, вам нравятся звуки установленной темы, но не нравится используемый при этом фон? Нет проблем: фон Рабочего стола меняется так же просто, как и сама тема, поэтому

Обои для Рабочего стола

Обои для Рабочего стола За картинку, используемую в качестве обоев для Рабочего стола отвечает строковый параметр HKEY_CURRENT_USERControl PanelDesktopWallpaper, который содержит путь bmp-файла

Ярлыки рабочего стола

Ярлыки рабочего стола Но иногда нужно, чтобы некоторые файлы находились всегда под рукой, чтобы работать с ними было еще проще. То же касается и программ, с которыми вы часто работаете. Как тут быть?В этом случае можно их вынести прямо на рабочий стол. Нет, это не тот рабочий

Читайте также:  Ubuntu как сделать рабочий стол

Обои для Рабочего стола

Обои для Рабочего стола За картинку, используемую в качестве обоев для Рабочего стола отвечает строковый параметр ·Wallpaper·, который содержит путь bmp-файла в HKCUControl PanelDesktopЧтобы ваша картинка на Рабочем столе располагалась в строго заданном месте, а не в центре, нужно в

Настройка темы Рабочего стола

Настройка темы Рабочего стола Бывает так: хочется поменять все – и цвет заголовков окон, и фоновый рисунок, и звуки, и указатели мыши. А настраивать все вручную страшно лень.Радуйтесь, лентяи! Специально для вас существуют так называемые темы, то есть наборы всех

Темы Рабочего стола

Темы Рабочего стола Чем бы вы ни занимались на любимом компьютере, вам придется постоянно взаимодействовать с интерфейсом программ. Операционная система Windows XP имеет большой набор фоновых рисунков и программ-заставок, с помощью которых можно создавать темы Рабочего

Настройка Рабочего стола

Настройка Рабочего стола Сокрытие всех элементов Рабочего стола Ключ:[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer] Значение:

Менеджеры Рабочего стола

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

2.5.4. Настройка рабочего стола

2.5.4. Настройка рабочего стола Настроить рабочий стол под свои вкусы и интересы — вещь, безусловно, необходимая, поскольку именно вы работаете на компьютере и должны чувствовать себя удобно и комфортно. Аналогично папкам, на рабочем столе Windows можно выровнять и

Темы Рабочего стола

Темы Рабочего стола Тема Рабочего стола – это набор параметров оформления, которые выполнены в едином стиле. Чтобы открыть окно изменения темы (рис. 2.23), щелкните кнопкой мыши в окне Персонализация на ссылке Тема. Рис. 2.23. Окно выбора темы Рабочего столаПо умолчанию в Windows

Настройка значков Рабочего стола

Настройка значков Рабочего стола Вы можете открыть окно настройки значков Рабочего стола, щелкнув кнопкой мыши в окне Персонализация на ссылке Изменить значки рабочего стола, которая находится на левой панели окна. В появившемся окне (рис. 2.26) можно включать или

Практическая работа 11. Настройка Рабочего стола

Практическая работа 11. Настройка Рабочего стола Задание. Настроить параметры Рабочего стола и сохранить их в виде темы.Последовательность выполнения1. Откройте окно свойств экрана, щелкнув правой кнопкой мыши на свободном месте Рабочего стола и выбрав в контекстном

Источник

Adblock
detector