Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизKак изменить рисунок рабочего стола Windows XP? Найти похожие ветки
← →
Muchacho (2004-07-16 14:39) [0]Kак изменить рисунок рабочего стола Windows XP?
← →
grom (2004-07-16 17:45) [1]изменить обои рабочего стола
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
PChar(OpenPictureDialog1.FileName), Update);
взято из рабочей программы
← →
Muchacho (2004-07-22 22:37) [2]Вы уверены что это работает в Windows XP (Delphi 8)? у меня не получилось. Нельзя вызывать эту функцию с такими параметрами
← →
grom (2004-07-22 23:30) [3]это работает в Windows XP
у меня Delphi 7
procedure TForm1.BWriteClick(Sender: TObject);
var Update: Cardinal;
TileWallpaper, WallpaperStyle: string;
begin
if RadioGroup1.ItemIndex = 0
then Update := SPIF_UPDATEINIFILE
else Update := SPIF_SENDCHANGE;
case CBStyle.ItemIndex of
0: begin
TileWallpaper := "0";
WallpaperStyle := "2";
end;
1: begin
TileWallpaper := "0";
WallpaperStyle := "0";
end;
2: begin
TileWallpaper := "1";
WallpaperStyle := "0";
end;
end;
reg.OpenKey("Control Panel\Desktop",false);
reg.WriteString("TileWallpaper", TileWallpaper);
reg.WriteString("WallpaperStyle", WallpaperStyle);
reg.CloseKey;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
PChar(OpenPictureDialog1.FileName), Update);
end;
могу выслать полностью исходник
← →
Alex#abc (2004-07-23 09:36) [4]unit UDT;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Picture: TButton;
ReFresh: TButton;
PSet: TButton;
procedure PictureClick(Sender: TObject);
procedure PSetClick(Sender: TObject);
procedure ReFreshClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FPic:string;
implementation
{$R *.dfm}
procedure TForm1.PictureClick(Sender: TObject);
begin
if OpenDialog1.Execute then Fpic:=OpenDialog1.FileName;
end;
procedure TForm1.PSetClick(Sender: TObject);
var reg:TRegIniFile;
begin
reg:=TRegIniFile.Create("control panel\desktop");
reg.WriteString("","wallpaper",FPic);
reg.WriteString("","tileWallpaper","0");
reg.WriteString("","Wallpaperstyle","0");
reg.Free;
end;
procedure TForm1.ReFreshClick(Sender: TObject);
begin
PSet.Click;
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,NIL,(SPIF_SENDWININICHANGE+SPIF_UPDATEINIFILE));
end;
end.
← →
Muchacho (2004-07-23 17:56) [5]сделал как сказал Alex#abc , все как-будто нормально, записывает в реестр тоже, но только не обновляется. В чем проблема по-вашему?
← →
Alex#abc (2004-07-26 09:44) [6]У меня была тажа проблема связанная с Active DeskTop, как пишут умные люди, вся проблема в строке:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,NIL,(SPIF_SENDWININICHANGE+SPIF_UPDATEINIFILE));
А точнее в ее последнем параметре (взято из работающей программы (полный текст смотри в прошом послании))
← →
Alex#abc (2004-07-26 09:45) [7]PS
в 2000 работает как часы!
← →
Muchacho (2004-07-26 21:05) [8]Спасибо вам, но это работает только для формата бмп. Если пользователь выбират рисунок jpeg в окне свойства экрана, XP переобразует его в бмп, сохраняет как
Documents and Settings\User\Local Settings\Application Data\Microsoft\wallpaper1.bmp
и записывает в реестр соответствуюшие пути.
Я в программе переобразовал jpeg в bmp, но тогда качество заметно ухудшается. Подскажите пожалуюста, что сделать?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c