03. maj 2001 - 17:56Der er
27 kommentarer og 2 løsninger
Windows Baggrundsbillede
Findes der nogle Windows API-funktioner til øjeblikkeligt at ændre window\'s (explorer\'s - altså skrivebordets) baggrundsbillede ?? Eller skal jeg ind i regbasen? For når jeg gør det, fx via \"HKEY_CURRENT_USER\\Control Panel\\Desktop\\Wallpaper\", og ændrer den value til noget andet, sker der ikke en sk*d!! Heller ikke når jeg trykker \"opdater\" på skrivebordet.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
ziron/borrisholt> Hvordan er det egentlig i lærer de der sindsyge koder? Er det dag ud og dagind med onlinehjælpen som godnatlæsning, eller er i uddannede i \'et?
borrisholt >> Hvis brugeren har Active Desktop installeret og har valgt \"Vis som web-side\", virker det ikke. Dvs. det virker, hvis brugeren selv højreklikkker og trykker \"opdater\" på skrivebordet. Men det skulle helst også virke, hvis brugeren har Active Desktop ... Evt. kunne jeg jo slå det fra - men ved ikke hvordan ;o)
Jeg har sq\'da glemt, at GetDesktopWindow ikke returnerer Explorer\'s window handle, men blot selve \"overfladen\" af windoze :-( - og dermed modtager explorer slet ikke mit f5-tryk
når så man har lavet sådan en hvad skal man så lave ? Gå hjem ?
Du kan lige få koden her. Det en ganske tyen wrapper omkring IActiveDesktop, som gør den lidt mere menneskelig at arbejde med, men stadig kan det hele ... Lig den i en unit for sig selv ....
type TActiveDesktop = class private FActiveDesktop : IActiveDesktop; FWallPaperOptions: TWallPaperOpt; FDesktopItemOptions: TComponentsOpt;
tmpBuffer: PWideChar;
FWallPaper: String; FPattern: String;
procedure SetWallPaper(const Value: String); procedure SetWallPaperOptions(const Value: TWallPaperOpt); procedure SetPattern(const Value: String); procedure SetDesktopItemOptions(var Value: TComponentsOpt); protected //Applies changes to the Active Desktop and saves them in the registry function ApplyChanges : Integer; procedure SetEnable(bEnable : Boolean); public constructor Create;
//Gets/Sets the wallpaper for the Active Desktop property WallPaper : String read FWallPaper write SetWallPaper;
//Adds the desktop item associated with the specified URL. function AddUrl(const Source : String; var pComp: TShComponent) : Integer;
//Adds a desktop item function AddDesktopItem(var pcomp: TShComponent): Integer;
//Adds a desktop item to the Active Desktop after displaying user interfaces //that confirm the addition of the desktop item, verify security zone permissions, //and ask if the user wants to create a subscription. function AddDesktopItemWithUI(var pcomp: TShComponent): Integer;
//Modifies the desktop item function ModifyDesktopItem(var pcomp: TShComponent): Integer;
//Removes the specified desktop item from the desktop function RemoveDesktopItem(var pcomp: TShComponent): Integer;
//Retrieves a count of the desktop items function GetDesktopItemCount : Integer;
//Retrieves the specified desktop item function GetDesktopItem(nComponent: Integer; var pcomp: TShComponent): Integer;
//Retrieves the desktop item that matches the given identification function GetDesktopItemByID(dwID: DWORD; var pcomp: TShComponent): Integer;
//Generates a generic HTML page containing the given desktop item. function GenerateDesktopItemHtml(FileName: String; var pcomp: TShComponent): Integer;
//Retrieves a desktop item using its source URL function GetDesktopItemBySource(Source: String; var pcomp: TShComponent): Integer;
//Determine if Active Desktop is enabled class function IsEnabled : Boolean;
//Enable Active Desktop procedure Enable;
//Disable Active Desktop procedure Disable; end;
implementation
{ TActiveDesktop }
function TActiveDesktop.AddDesktopItem(var pcomp: TShComponent): Integer; begin result := FActiveDesktop.AddDesktopItem(pcomp, 0); ApplyChanges; end;
function TActiveDesktop.AddDesktopItemWithUI(var pcomp: TShComponent): Integer; begin result := FActiveDesktop.AddDesktopItemWithUI(0,pcomp,0); ApplyChanges; end;
function TActiveDesktop.AddUrl(const Source: String; var pComp: TShComponent): Integer; begin tmpBuffer := AllocMem(length(Source) *SizeOf(WideChar)+1); try StringToWideChar(Source,tmpBuffer, length(Source) *SizeOf(WideChar)+1); result := FActiveDesktop.AddUrl(Application.MainForm.Handle,tmpBuffer,pComp,ADDURL_SILENT); finally FreeMem(tmpBuffer); end; ApplyChanges; end;
Function TActiveDesktop.ApplyChanges : Integer; begin result := FActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE or AD_APPLY_REFRESH); end;
constructor TActiveDesktop.Create; begin FActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop; FActiveDesktop.GetWallpaperOptions(FWallPaperOptions,0); FActiveDesktop.GetDesktopItemOptions(FDesktopItemOptions,0);
procedure TActiveDesktop.SetEnable(bEnable: Boolean); var ComponentsOpt: TComponentsOpt; begin ComponentsOpt.dwSize := sizeof(ComponentsOpt); ComponentsOpt.fActiveDesktop := ComponentsOpt.fEnableComponents = bEnable; SetDesktopItemOptions(ComponentsOpt); ApplyChanges; end;
function TActiveDesktop.GenerateDesktopItemHtml(FileName: String; var pcomp: TShComponent): Integer; begin tmpBuffer := AllocMem(length(FileName)*SizeOf(WideChar)+1); try StringToWideChar(FileName,tmpBuffer, length(FileName)*SizeOf(WideChar)+1); result := FActiveDesktop.GenerateDesktopItemHtml(tmpBuffer,pcomp,0); finally FreeMem(tmpBuffer); end; end;
function TActiveDesktop.GetDesktopItem(nComponent: Integer; var pcomp: TShComponent): Integer; begin result := FActiveDesktop.GetDesktopItem(nComponent, pcomp, 0); end;
function TActiveDesktop.GetDesktopItemByID(dwID: DWORD; var pcomp: TShComponent): Integer; begin result := FActiveDesktop.GetDesktopItemByID(dwID, pcomp,0); end;
function TActiveDesktop.GetDesktopItemBySource(Source: String; var pcomp: TShComponent): Integer; begin tmpBuffer := AllocMem(length(Source)*SizeOf(WideChar)+1); try StringToWideChar(Source,tmpBuffer, length(Source) *SizeOf(WideChar)+1); result := FActiveDesktop.GetDesktopItemBySource(tmpBuffer,pcomp,0); finally FreeMem(tmpBuffer); end; end;
function TActiveDesktop.GetDesktopItemCount: Integer; begin FActiveDesktop.GetDesktopItemCount(result,0); end;
class function TActiveDesktop.IsEnabled: Boolean; var ShellFlagState : TShellFlagState; begin SHGetSettings(ShellFlagState, SSF_DESKTOPHTML); result := bool(ShellFlagState.Data); end;
function TActiveDesktop.ModifyDesktopItem(var pcomp: TShComponent): Integer; begin result := FActiveDesktop.ModifyDesktopItem(pcomp,COMP_ELEM_ALL); ApplyChanges; end;
function TActiveDesktop.RemoveDesktopItem(var pcomp: TShComponent): Integer; begin result := FActiveDesktop.RemoveDesktopItem(pcomp,0); ApplyChanges; end;
procedure TActiveDesktop.SetDesktopItemOptions( var Value: TComponentsOpt); begin FActiveDesktop.SetDesktopItemOptions(Value,0); FDesktopItemOptions := Value; ApplyChanges; end;
procedure TActiveDesktop.SetPattern(const Value: String); begin FPattern := Value;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.