---- 壹. 基本編程思路
---- 大家都知道屏幕保護程序就是利用變換的顏色或圖形以防止不變化的屏幕像素被損傷。所以,屏幕保護程序就是顯示不斷變化或移動的圖形,並且當有鼠標移動或按鍵時能夠終止的程序。
---- 1. 編制屏幕保護圖形
---- 2. 隱藏鼠標
---- 用ShowCursor Windows API 函數我們可以實現隱藏鼠標。
---- 3. 檢測鼠標和按鍵行為
---- 檢測上述行為以便退出屏幕保護程序
---- 4. Windows 調用屏幕保護程序的參數命令
---- /a 在顯示器屬性對話框中單擊了改變口令按鈕。
---- /p 每當選中顯示器屬性對話框中屏幕保護程序標簽時,在對話框顯示預覽效果。
---- /c 在顯示器屬性對話框中單擊了設置按鈕。
---- /s 在顯示器屬性對話框中單擊了預覽按鈕或屏幕保護程序被系統正常調用。
---- 5. 編譯屏幕保護程序
---- 其實任何VB應用程序都可作為屏幕保護程序來運行,但為了被Windows 95 所調用,需要將它作為屏幕保護程序來編譯。首先進入VB5編程環境,編好程序後選擇/File/Make project菜單項,然後在File Name文本框中將後綴名EXE改為SCR。最後單擊OK按鈕,將生成的SCR文件拷到Windows目錄下,就完成了屏幕保護程序的創建。
---- 二. 實例
---- 下面就用壹個實例給大家詳細說明屏幕保護程序的制作。
Option Explicit
Dim quitflag As Boolean ‘聲明終止程序標誌變量
Dim lleft
‘聲明隱藏或顯示鼠標的API函數
Private Declare Function ShowCursor Lib "user32"
(ByVal bShow As Long) As Long
‘檢測鼠標單擊或移動
Private Sub Form_Click()
quitflag = True
End Sub
Private Sub Form_MouseMove(Button As Integer,
Shift As Integer, X As Single, Y As Single)
Static xlast, ylast
Dim xnow As Single
Dim ynow As Single
xnow = X
ynow = Y
If xlast = 0 And ylast = 0 Then
xlast = xnow
ylast = ynow
Exit Sub
End If
If xnow < > xlast Or ynow < > ylast Then
quitflag = True
End If
End Sub
‘檢測按鍵
Private Sub Form_KeyDown(KeyCode As Integer,
Shift As Integer)
quitflag = True
End Sub
Private Sub Form_Load()
Dim X As Long
lleft = 0
‘橫向滾動文字的起始X坐標
If App.PrevInstance = True Then
‘用APP對象的PrevInstance屬性
Unload Me
‘防止同時運行屏幕保護程序的兩個實例
Exit Sub
End If
Select Case Ucase$(Left$(Command$, 2))
‘裝載命令行參數
Case "/S" ‘在顯示器屬性對話框中單擊了
預覽按鈕或屏幕保護程序被系統正常調用。
Show
‘全屏顯示Form1窗體
Randomize
‘初始化隨機數生成器
X = ShowCursor(False)
‘隱藏鼠標
BackColor = vbBlack
Do
Timer2.Enabled = True
‘啟動Timer2 ,顯示屏幕保護滾動文字
DoEvents
‘轉讓控制權,以便檢測鼠標和按鍵行為
Loop Until quitflag = True
‘運行屏幕保護滾動文字直至有鼠標和按鍵行為
Timer2.Enabled = False
‘終止滾動文字
Timer1.Enabled = True
‘啟動Timer1,退出屏幕保護程序
Case Else
Unload Me
Exit Sub
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim X
X = ShowCursor(True)
‘顯示鼠標
End Sub
Private Sub Timer1_Timer()
Unload Me
‘退出屏幕保護程序
End Sub
Private Sub Timer2_Timer()
顯示橫向滾動文字
lleft = lleft + 100
If lleft >= 11810 Then
lleft = 0
Lab1.Top = Int(Rnd * 7000)
End If
Lab1.Left = lleft
Timer2.Enabled = False
End Sub