28 פיט - יפלד
ישאר דומע | םיפיטה דומע רנק ודיע תאמ

.ActiveDesktop ארקנש רבד שי 98/2000 תונולח זאמ
.הדובעה ןחלושב הנומתה תא תונשל תורשפאה תא םשייל ,תאזה הטישב היעב שי
?הז תא םישוע תאז לכב ךיא זא
דנלרוב לש רתאה ךותמ*
uses
  ComObj, // For CreateComObject and Initialization/Finalization of COM
  ShlObj;  // For IActiveDesktop

{  The CLASS ID for ActiveDesktop is not defined in
   ShlObj, while the IID is so we define it here. }
const
  CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';

{ Demonstrate getting the Wallpaper }
procedure TForm1.Button1Click(Sender: TObject);
var
  ActiveDesktop: IActiveDesktop;
  CurrentWallpaper: string;
  CurrentPattern: string;
  WallpaperOptions: TWallpaperOpt;
  tmpBuffer: PWideChar;
begin
  // Create the ActiveDesktop COM Object
  ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;

  // We now need to allocate some memory to get the current Wallpaper.
  // However, tmpBuffer is a PWideChar which means 2 bytes make
  // up one Char. In order to compenstate for the WideChar, we
  // allocate enough memory for MAX_PATH*2
  tmpBuffer := AllocMem(MAX_PATH*2);
  try
    ActiveDesktop.GetWallpaper(tmpBuffer, MAX_PATH*2, 0);
    CurrentWallpaper := tmpBuffer;
  finally
    FreeMem(tmpBuffer);
  end;
  if CurrentWallpaper <> '' then
    Label1.Caption := 'Current Wallpaper: ' + CurrentWallpaper
  else
    Label1.Caption := 'No Wallpaper set';

  // Now get the current Wallpaper options.
  // The second parameter is reserved and must be 0.
  WallpaperOptions.dwSize := SizeOf(WallpaperOptions);
  ActiveDesktop.GetWallpaperOptions(WallpaperOptions, 0);
  case WallpaperOptions.dwStyle of
    WPSTYLE_CENTER:  Label2.Caption := 'Centered';
    WPSTYLE_TILE:    Label2.Caption := 'Tiled';
    WPSTYLE_STRETCH: Label2.Caption := 'Stretched';
    WPSTYLE_MAX:     Label2.Caption := 'Maxed';
  end;

  // Now get the desktop pattern.
  // The pattern is a string of decimals whose bit pattern
  // represents a picture. Each decimal represents the on/off state
  // of the 8 pixels in that row.
  tmpBuffer := AllocMem(256);
  try
    ActiveDesktop.GetPattern(tmpBuffer, 256, 0);
    CurrentPattern := tmpBuffer;
  finally
    FreeMem(tmpBuffer);
  end;
  if CurrentPattern <> '' then
    Label3.Caption := CurrentPattern
  else
    Label3.Caption := 'No Pattern set';
end;

{ Demonstrate setting the wallpaper }

procedure TForm1.Button2Click(Sender: TObject);
var
  ActiveDesktop: IActiveDesktop;
begin
  ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
    as IActiveDesktop;
  ActiveDesktop.SetWallpaper('c:\downloads\images\test.bmp', 0);
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;