通俗基础教程
电脑操作教程
电脑怎样拨号上网
如何做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典提高教程
怎样使用代理服务器
如何做无盘工作站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
Frontpage2000教程
Authware教程
Office2000教程
如何制作动画图片
OICQ&ICQ使用方法

高手学习指南

硬件升级技巧
CGI教程
ASP教程

PHP教程

注册表使用技巧
路由器的设置
网站建设指南
SQL
最近更新:
操作使用
相关内容

让你的桌面墙纸自动更新

文/夏斌 李光明 (2000/08/22 )

  每次启动Windows 98后,呈现在你面前的都是一层不变的墙纸,你一定有些厌倦了吧;如果每次都进行手动设置,又未免有些太麻烦了。为此,我们利用Visual Basic 6.0编制了一个小程序,通过修改windows 98注册表中的键值,实现每次开机时墙纸自动进行更新。

  利用Visual Basic编程进行墙纸的更换,通常都是通过调用Windows所提供的API(Application Programming Interface)函数SystemParametersInfo来实现的。但是,SystemParametersInfo函数只能显示BMP文件。然而,现在许多精美的图像大多是以JPG格式存放的,对此,SystemParametersInfo函数就无能为力了。如果对Windows的注册表有所了解,那么你可以使用Windows文件夹中的登录编辑程序Regedit.exe查看Windows98的注册表中墙纸(WallPaper)的属性项(HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer\Desktop\General)。墙纸的设置即存放于此处,墙纸的属性值即墙纸所对应的图像文件的路径及文件名。由此可以想到:只要修改该属性值图像文件的路径和文件名就可以改变墙纸。使用Visual Basic 6.0如何修改注册表中的WallPaper属性值呢?当然是利用功能强大的API函数。查找有关Win32 API的编程手册,可以找到许多有关对注册表进行操作访问的API函数,为了解决前述问题,应选择如下函数:

  ① RegOpenKey,其功能是打开一个现有的注册表项(或键);

  ② RegSetValueEx,其功能是设置指定项(或键)的值(Value);

  ③RegCloseKey,其功能是关闭系统注册表中已打开的一个项(或键)。

  有了这三个API函数,使用以下句子,即可方便地对墙纸进行设置:

  lpSubKey = ".DEFAULT\Software\Microsoft\Internet Explorer\Desktop\General"
  lReturn = RegOpenKey(hKey, lpSubKey, lHandle)
  lReturn = RegSetValueEx(lHandle, "Wallpaper", Reserved, 1&, ByVal JpgName, LenB(StrConv(JpgName, vbFromUnicode)) + 1)
  lReturn = RegCloseKey(lHandle)

  其中,JpgName是作为墙纸的JPG文件的文件名。我们可以数字为文件名对JPG图像文件进行命名,并通过VB的随机函数选择某文件:

  x = Int((5 - 1 + 1) * Rnd + 1)

  JpgName = App.Path & Trim(Str(x)) & ".jpg"

  以下源程序,就是根据以上思想具体实现墙纸的更换。程序要求所用的墙纸文件*.JPG与所生成的可执行文件存放在和同一目录下,并且墙纸文件命名为N.jpg(N为1~5的整数);将可执行文件安装在启动组中,即可实现每次随机设置你的墙纸。

  在窗体的通用声明(General_Declarations)中,对API函数予以声明:

  Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
  Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  Private Sub Form_Load()
  Dim hKey, Reserved, lHandle As Long
  Dim lpType, lReturn As Long
  Dim lpSubKey, JpgName As String
  Dim x As Integer
  '随机产生1个整数N,其中N∈(1~5)
  Randomize
  x = Int((5 - 1 + 1) * Rnd + 1)
  JpgName = App.Path & Trim(Str(x)) & ".jpg"
  Reserved = 0&
  lpType = 1& '设置字符串值类型为REG_SZ
  hKey = &H80000003 'HKEY_USERS的常数值
  lpSubKey = ".DEFAULT\Software\Microsoft\Internet Explorer\Desktop\General"
  lReturn = RegOpenKey(hKey, lpSubKey, lHandle)
  If lReturn = 0 Then '表示成功
  lReturn = RegSetValueEx(lHandle, "Wallpaper", Reserved, 1&, ByVal JpgName, LenB(StrConv(JpgName, vbFromUnicode)) + 1)
  lReturn = RegCloseKey(lHandle)
  End If
  Unload Me
  End Sub

  以上程序在中文Windows98,Visual Basic 6.0上通过。

如何改造98/2000为双引导?
怎样管理好您的硬盘
Windows NT Server无盘站配置技术详解
重新认识Windows 98 备份
克隆Norton Ghost
Windows98快捷键大全(一):功能键等的使用
Windows98快捷键大全(二):ALT键的使用
利用opera获得软件的真实下载地址
Windows 2000 的优化技巧
Windows桌面的沿伸-一机双屏
将HTML文档设置为Windows桌面背景
优秀的桌面管家—Wintidy 95
在Windows开始菜单建立桌面快捷方式
让你的桌面墙纸自动更新
 
教程站
收集整理
服务大家