Oppure

Loading
18/06/10 21:30
Salve ,
sto cercando di settare un immagine come sfondo, io avevo pensato di scaricare direttamente su un tmemorystream per poi caricarlo direttamente sul desktop.
La prima fase è facile ,peccato che non riesco a trovare un modo per poter settare direttamente sulla memoria dell ' immagine del desktop tutto il contenuto della tmemorystream senza passare per file .
Qualcuno di voi mi sa dare una mano ?
ho provato con questo codice ma non ha funzionato :
var
  Desktop: HDC;
  MyCanvas: TCanvas;
  MyRect: TRect;
  bitmap:Timage;
begin
  Desktop := GetDC(GetDesktopWindow);
  MyCanvas:= TCanvas.Create;
    MyCanvas.Handle := Desktop;
    MyCanvas.Draw(0,0,form1.Image1.Picture.Graphic);
    MyCanvas.Refresh;

Premetto ho gia cercato su google!
18/06/10 21:48
systemgvp
non ho capito bene dove lo vuoi caricare poi lo sfondo, o meglio dove lo devi impostare se come sfondo del desktop e del form o di altro?
aaa
19/06/10 10:27
allora :
c'e un immagine su internet ... la carico in memoria .
Dopodiche io vorrei settare quell' immagine che risiede in memoria come sfondo del desktop senza dover per forza salvarla su file . Come posso fare?
19/06/10 10:37
Irvine
prova con questa, al posto del percorso passa come paramentro l'immagine che hai creato ( che devi mettere in una varivile bitmap)

uses Windows, SysUtils;
procedure SetWallpaper(const Filename: TFilename; Tiled: boolean);
var
  sTiled: string;
begin
  if Filename <> '' then begin
    if tiled then sTiled := '1' else sTiled := '0';
    SetRegistryData(HKEY_CURRENT_USER, '\Control Panel\Desktop',
      'TileWallpaper', rdString, sTiled);
  end;
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
    Pointer(Filename), SPIF_UPDATEINIFILE);
end;


e alla fine richiama con questa:
SetWallpaper('percorso immagine bitmap', true);


per dichiare la variabile bitmap:

var nomevariabile : bitmap;
aaa
19/06/10 11:50
Postato originariamente da Irvine:

prova con questa, al posto del percorso passa come paramentro l'immagine che hai creato ( che devi mettere in una varivile bitmap)

uses Windows, SysUtils;
procedure SetWallpaper(const Filename: TFilename; Tiled: boolean);
var
  sTiled: string;
begin
  if Filename <> '' then begin
    if tiled then sTiled := '1' else sTiled := '0';
    SetRegistryData(HKEY_CURRENT_USER, '\Control Panel\Desktop',
      'TileWallpaper', rdString, sTiled);
  end;
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
    Pointer(Filename), SPIF_UPDATEINIFILE);
end;


e alla fine richiama con questa:
SetWallpaper('percorso immagine bitmap', true);


per dichiare la variabile bitmap:

var nomevariabile : bitmap;


-.- ho detto senza salvare su file! ma parlo arabo? O.o
19/06/10 12:59
Irvine
infatti, basta che quando richiami la procedura al posto di passargli il percorso passi l'immagine direttamente, a me funziona bene
aaa
19/06/10 14:26
puoi postare il tuo codice plz ?