PDA

View Full Version : سوال: چرا عکس دسکتاب عوض نمیشه؟



vahid301
شنبه 24 مهر 1389, 13:13 عصر
با سلام
من از کد زیر استفاده میکنم تا عکس پس زمینه دسکتاب را عوض کنم اما بجای عوض شدن عکس , پس زمینه بدون هیچ عکسی وبه رنگ آبی در میاید


public class Wallpaper{
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDWININICHANGE = 0x02;
[DllImport("user32.dll", CharSet = CharSet.Auto)] static extern int SystemParametersInfo( int uAction, int uParam, string lpvParam, int fuWinIni);
public enum Style : int { Tiled, Centered, Stretched } public void SetWallpaper(string path, Style style) { RegistryKey key = Registry.CurrentUser.OpenSubKey( "Control Panel\\Desktop", true);
switch( style ) { case Style.Stretched : key.SetValue(@"WallpaperStyle", "2") ;
key.SetValue(@"TileWallpaper", "0") ;
break;
case Style.Centered : key.SetValue(@"WallpaperStyle", "1") ; key.SetValue(@"TileWallpaper", "0") ; break;
case Style.Tiled : key.SetValue(@"WallpaperStyle", "1") ; key.SetValue(@"TileWallpaper", "1") ;
break;
} SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); }}

مشکل از کجاست؟

ali.rezaei7
شنبه 24 مهر 1389, 16:20 عصر
سلام
فایلی که قراره به عنوام پس زمینه انتخاب بشه، باید از نوع bitmap باشه.
قطعه کد بالا درست کار میکنه البته تا وقتی که فایل از نوع bitmap باشه.در غیر این صورت هیچ عکسی در دسکتاپ نشان داده نمی شود.

قطعه کد زیر تصویر را به فرمت بیتمپ تغییر می ده و کنار فایل برنامه ذخیره می کنه و درانتها به وسیله این عکس، تصویر دسکتاپ رو تغییر میده.




using System.Drawing;
using System.Drawing.Imaging;

public class Wallpaper
{
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDWININICHANGE = 0x02;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
public enum Style : int { Tiled, Centered, Stretched }
public void SetWallpaper(string path, Style style)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);

switch (style)
{
case Style.Stretched: key.SetValue(@"WallpaperStyle", "2");
key.SetValue(@"TileWallpaper", "0");
break;
case Style.Centered: key.SetValue(@"WallpaperStyle", "1"); key.SetValue(@"TileWallpaper", "0"); break;
case Style.Tiled: key.SetValue(@"WallpaperStyle", "1"); key.SetValue(@"TileWallpaper", "1");
break;
}
Image.FromFile(path).Save("Wallpaper.bmp", ImageFormat.Bmp);
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "Wallpaper.bmp", SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
}