当前位置: 网学 > 编程文档 > VB > 正文

VB5.0制作屏幕保护程序奥秘

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
API 过 程 能 够 确 定 系 统 中 是 否 有 另 外 的 应 用 程 序 正 在 运 行。 它 需 要 两 个 字 符 串 参 数, 一 个 表 示 应 用 程 序 的 类 名, 另 一 个 表 示 窗 口 的 标 题 栏:

Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

---- 下 面 的 代 码 展 示App.PreInstance 和FindWindow 是 如 何 典 型 地 在 一 个 屏 幕 保 护 程 序 中 实 现 的。

Private Sub CheckShouldRun()

注释:如果屏幕保护程序已运行,退出
If Not App.PrevInstance Then Exit Sub

注释:确定系统中是否有同名的屏幕保护程序正在运行
If FindWindow(vbNullString, APP_NAME) Then End

注释:设置实例名称
frmCover.Caption = APP_NAME
End Sub

---- 三、 在 屏 幕 保 护 程 序 中 隐 藏 鼠 标

---- ShowCursor API 函 数 允 许 在Visual Basic 应 用 程 序 中 隐 藏 或 显 示 鼠 标, 每 次 用 参 数 值True 或False 调 用ShowCursor 可 以 使 鼠 标 显 示 或 隐 藏。 以 下 是ShowCursor API 函 数 的 声 明:

Declare Function ShowCursor Lib "user32"
(ByVal bShow As Long) As Long

---- 四、 检 测 鼠 标 的 移 动

---- 鼠 标 的 移 动 在 屏 幕 保 护 模 式 时, 需 要 退 出 程 式, 但 在 预 显 模 式 时, 不 对 程 序 有 影 响, 所 以 设 置RunMode 全 局 变 量 来 确 定 鼠 标 对 程 序 是 否 起 作 用。MouseMove 事 件 用 来 检 测 鼠 标 的 移 动, 当 应 用 程 序 启 动 时 甚 至 鼠 标 实 际 上 并 未 移 动 的 情 况 下,MouseMove 事 件 都 会 触 发 一 次。 所 以 触 发MouseMove 事 件 时, 只 是 记 录 鼠 标 当 前 位 置, 仅 当 鼠 标 真 正 从 其 起 始 位 置 移 开 一 个 较 大 位 移 时, 才 终 止 屏 幕 保 护 程 序。 具 体 实 现 代 码 如 下:

Private Sub Form_MouseMove(Button As Integer,
Shift As Integer, x As Single, y As Single)
Static x0 As Integer
Static y0 As Integer

注释:非屏幕保护模式退出过程
If RunMode < > rmScreenSaver Then Exit Sub

注释:大的鼠标移动退出程序
If ((x0 = 0) And (y0 = 0)) Or _
((Abs(x0 - x) < 5) And (Abs(y0 - y) < 5)) _
Then
注释:小的鼠标移动
x0 = x
y0 = y
Exit Sub
End If

Unload Me
End Sub

---- 五、 设 置 参 数 的 读 取 和 保 存

---- 在Visual Basic 中,SaveSetting 函 数 提 供 了 在 Windows 注 册 表 中 保 存 或 建 立 应 用 程 序 私 有 参 数 的 功 能。 其 语 法 为:

SaveSetting appname, section, key, setting

---- SaveSetting 函 数setting 的 值 保 存 在 如HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key 下。

---- GetSetting 函 数 提 供 在 Windows 注 册 表 中 读 取 应 用 程 序 私 有 参 数 的 功 能。 其 语 法 为:

GetSetting(appname, section, key[, default])

---- 如 果 GetSetting 的 参 数 中 的 任 何 一 项 都 不 存 在, 则 GetSetting 返 回 default 的 值。 如 果default 值 省 略, 则 返 回 长 度 为 零 的 字 符 串 ("")。

---- 程 序 中 应 用 如 下:

Public Sub SaveConfig()
注释:保存设置参数到注册表中
SaveSetting APP_NAME, _
"Settings", "NumBalls", Format$(NumBalls)
End Sub

Public Sub LoadConfig()
注释:从注册表中读取参数,如果没有设置,默认值为1
NumBalls = CInt(GetSetting(APP_NAME, _
"Settings", "NumBalls", "1"))
End Sub

---- 六、 小 屏 幕 预 显 窗 口 实 现

---- 要 将

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号