您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:10 来源:未知

制作一个本企业的屏幕保护,在客户运行本企业的应用软件的时候,为客户更改屏幕保护,是个广告宣传的好办法。有很多朋友提出这个问题,现解答如下:
   要更换屏幕保护,首先得做好一个屏幕保护(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

 

 

相关文章

用VB编写“红绿灯”程序
用VB设计聚焦框程序
VB与Windows API 间的呼叫技巧
用Winsock制作一套聊天室和对话系统
无框窗体移动最简法(程序)
VB创建位图菜单
VB 从零开始编外挂(七)
用VB打造自己的SQL连接器
在程序中打开 Internet 拨号连接窗口
用VB实现浮动按钮
用VB写的一个组件,实现添加系统用户,并添
用Visual Basic自编小游戏
几行VB代码拿下注册表
用VB设计一个定时闹钟程序
如何开发一个属于自己的编程语言开发工具
用VB设计MSN信息群发软件
编写快速高效的VB程序
无闪烁地快速附加字符串到TextBox控件
善用 Assume No Aliasing 编译选项
VB中OLE调用的优化方法

相关评论


本文章所属分类:首页 VB

  热门关键字: