PDA

View Full Version : چطور تصویر دسکتاپ رو عوض کنم؟



javad2000
چهارشنبه 04 مهر 1386, 08:35 صبح
این هم برای 10 کاراکتر!

amirsajjadi
چهارشنبه 04 مهر 1386, 13:02 عصر
با سلام
میتونی مقدار کلید رجیستری زیر رو تغییر بدی به اون آدرس تصویری که میخوای
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper
ولی باید بعدش ویندوز رو ریست یا لوگ آف کنی
راه دیگه اون استفاده از API است که بعضی وقتها توی بعضی سیستم عامل ها ی ویندوز جواب میده
PrivateDeclareFunction SystemParametersInfo Lib"user32"Alias"SystemParametersInfoA" (ByVal uAction AsInteger, ByVal uParam AsInteger, ByRef lpvParam AsString, ByVal fuWinIni AsInteger) AsLong
Const SPI_SETDESKWALLPAPER = 20
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OnErrorResumeNext
Dim lngSuccess AsLong
Dim strBitmapImage AsString = "Address Pic"
lngSuccess = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, strBitmapImage, 0)
EndSub

saeed_rezaei
چهارشنبه 04 مهر 1386, 22:54 عصر
سلام.
با استفاده از تابع api زیر شما می تونید به راحتی تصویر رو بدون log out کردن تغییر بدید.



'api to set the systems parameters for changing the wallpaper
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer

'constants to be used with the above api
Private Const SPI_SETDESKWALLPAPER = 20
Private Const SPIF_UPDATEINIFILE = &H1





و حالا با دستور زیر می تونید تصویری رو که آدرسش در متغیر imagepath قرار داره رو بندازید تو پس زمینه.





SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imagePath, SPIF_UPDATEINIFILE)

amirsajjadi
چهارشنبه 04 مهر 1386, 23:22 عصر
دوست عزیز من هم همینو نوشتم ولی توی ویندوز مدیا سنتر 2005 جواب نمیده !!!

saeed_rezaei
چهارشنبه 04 مهر 1386, 23:33 عصر
سلام امیر جان.
بله. من کد خودت رو اینجوری نوشتم. اینکه چطوری مطلبتون رو ارائه بدید خیلی مهمه. همیشه هنگام نوشتن کدهاتون اونها رو توی بلوکهای
[code]
قرار بدید. کافیه روی آیکن # کلیک کنید تا بلوک رو واستون بزنه.
موفق باشید

javad2000
پنج شنبه 05 مهر 1386, 01:35 صبح
سلام
خیلی ممنون
همین کدها رو با یه خورده تغییر استفاده کردم که جواب داد.
دستتون درد نکنه.

amirsajjadi
پنج شنبه 05 مهر 1386, 10:29 صبح
اگه میشه تغییراتی که روی کدها اعمال کردید رو بنویسید ؟

javad2000
پنج شنبه 05 مهر 1386, 15:28 عصر
اگه میشه تغییراتی که روی کدها اعمال کردید رو بنویسید ؟
این کد برنامه ای هست که برای تست تغییر دسکتاپ نوشتم. یه فرم با دو تا Button داره که Button1 برای SetWallPaper و Button2 برای GetWallPaper عمل می کنه.
تذکر:
فایل های wallPaper باید حتماً bmp باشند.

ضمناً این TextEditor فروم یه خورده کدها رو به هم می ریزه. خودتون درستش کنید.



PublicClass Form1
Inherits System.Windows.Forms.Form
PrivateDeclareFunction SystemParametersInfo Lib"user32"Alias"SystemParametersInfoA" (ByVal uAction AsInteger, ByVal uParam AsInteger, ByVal lpvParam AsString, ByVal fuWinIni AsInteger) AsInteger
PrivateConst SPI_SETDESKWALLPAPER AsShort = 20
PrivateConst SPIF_UPDATEINIFILE AsShort = 1
PublicEnum WallPaperStyle AsInteger
Tiled
Centered
Stretched
EndEnum
Sub SetWallPaper(ByVal FilePath AsString, ByVal UpdateRegistry AsBoolean, ByVal wpStyle As WallPaperStyle)
Dim upd AsShort
If UpdateRegistry Then
upd = SPIF_UPDATEINIFILE
Else
upd = 0
EndIf
Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
Try
SelectCase wpStyle
Case WallPaperStyle.Stretched
key.SetValue("WallpaperStyle", "2")
key.SetValue("TileWallpaper", "0")
Case WallPaperStyle.Centered
key.SetValue("WallpaperStyle", "1")
key.SetValue("TileWallpaper", "0")
Case WallPaperStyle.Tiled
key.SetValue("WallpaperStyle", "1")
key.SetValue("TileWallpaper", "1")
EndSelect
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, FilePath, upd)
Catch ex As Exception
'MsgBox(ex.Message)
EndTry
EndSub
Function GetWallPaper() AsString
Try
ReturnMy.Computer.Registry.GetValue _
("HKEY_CURRENT_USER\Control Panel\DeskTop", "WallPaper", "")
Catch ex As Exception
Return""
'MsgBox(ex.Message)
EndTry
EndFunction
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim A AsNew OpenFileDialog
A.ShowDialog()
Me.SetWallPaper(A.FileName, True, WallPaperStyle.Stretched)
EndSub
PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox(GetWallPaper)
EndSub
EndClass