手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

用VB设计更换屏幕保护的程序

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
制作一个本企业的屏幕保护,在客户运行本企业的应用软件的时候,为客户更改屏幕保护,是个广告宣传的好办法。有很多朋友提出这个问题,现解答如下:
   要更换屏幕保护,首先得做好一个屏幕保护(scr文件),本例以 工程1.scr 这个文件为例。由于Windows是把屏幕保护文件存放在system下,但记录屏幕保护文件位置的文件却是windows目录下的system.ini,所以,首先需要找出系统的windows和system目录的确切安装位置。因此,可以分如下几步进行:

  1、找到windows和system目录的安装位置

  2、把屏幕保护文件复制到system目录下

  3、在system.ini中的[boot]中写入:

    SCRNSAVE.EXE=C:\WINDOWS\SYSTEM\工程1.SCR

  4、告诉系统切换屏幕保护。

  下面的例子成功地改变了屏幕保护,全部源代码如下:

'得到windows目录

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lPBuffer As String, ByVal nSize As Long) As Long

'修改system.ini
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lplFileName As String) As Long

'得到system目录
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

'设置屏幕保护
Private Const SPI_SETSCREENSAVETIMEOUT = 15
Private Const SPI_SETSCREENSAVEACTIVE = 17
Private Const SPIF_UPDATEINIFILE = &H1
Private Const SPIF_SENDWININICHANGE = &H2

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Long, ByVal fuWinIni As Long) As Long

'启动屏幕保护
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_SYSCOMMAND = &H112
Private Const SC_SCREENSAVE = &HF140

Private Sub Form_Load()
  '得到system目录
  Dim sSave As String, Ret As Long
  sSave = Space(255)
  Ret = GetSystemDirectory(sSave, 255)
  sSave = Left$(sSave, Ret)
  '把屏保复制到系统目录
  FileCopy App.Path & "\工程1.scr", sSave & "\工程1.SCR"
  '得到windows目录
  Dim Path As String, strSave As String
  strSave = String(250, Chr$(0))
  Path = Left$(strSave, GetWindowsDirectory(strSave, Len(strSave)))
  '修改system.ini
  Dim r As Long
  Dim iniPath As String
  iniPath$ = Path "\system.ini"
  r = WritePrivateProfileString("boot", "SCRNSAVE.EXE", sSave & "\工程1.SCR", iniPath)
  '设置时间间隔为1分钟=60秒
  lRet = SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 60, ByVal 0&,  
     SPIF_UPDATEINIFILE SPIF_SENDWININICHANGE)
  '设置屏幕保护
  retval = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, True, 0, 0)
  '启动屏幕保护
  Dim result As Long
result = SendMessage(Form1.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0&)
End Sub

  本例在VB6.0 win95下运行通过。

上一篇: 无框窗体移动最简法(程序)
下一篇: 解除网虫心病 VB做定时断线程序

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!