18th
Ноя

Функция меняет картинку на рабочем столе и сохраняет её

Posted by Chas under Delphi

dmitriegorovih

uses
...ComObj, ShlObj;

...

function StringToPWide(sStr: string; var iNewSize: integer): PWideChar;
var
pw: PWideChar;
iSize: integer;
begin
iSize := Length(sStr) + 1;
iNewSize := iSize * 2;

pw := AllocMem(iNewSize);

MultiByteToWideChar(CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize);

Result := pw;
end;

procedure ChangeActiveWallpaper(putwallpaper:pwidechar);
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
as IActiveDesktop;
ActiveDesktop.SetWallpaper(putwallpaper, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
isize:integer;
begin
ChangeActiveWallpaper(StringToPWide('D:\Wallpaper1.bmp',isize));
end;

тема на форуме

Похожие статьи