各位高手,我用VB来做一个屏保,程序如下。但是有这样一个问题,想大家帮帮忙。就是把这个保存为:A.scr 时,放在C:/system32 的文件夹下,就可以在桌面的属性里把A.scr 设置为当前的屏保,但是就是有这样的问题,在桌面的属性的屏保里把A.scr 选为当前的屏保时,立刻就把A.scr 弹出来,这个问题我不知道该如何解决,请各位帮忙看看!Option Explicit
Dim quitflag As Boolean '声明终止程序标志变量
'声明隐藏或显示鼠标的API函数
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
'检测鼠标单击
Private Sub Form_Click()
quitflag = True
End Sub
'检测按键
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
quitflag = True
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
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_Load()
Dim X As Long
If App.PrevInstance = True Then '用APP对象的PrevInstance属性
Unload Me '防止同时运行屏幕保护程序的两个实例
Exit Sub
End If
Me.Caption = ""
Me.BorderStyle = 0 '-None 取消标题栏和最大化、最小化按钮
Me.WindowState = 2 '-Maximized 窗体最大化
Timer1.Enabled = False
Timer1.Interval = 1
Me.BackColor = vbBlack
Me.Show '全屏显示Form1窗体 X = ShowCursor(False) '隐藏鼠标
'realplay 连接到一个电视台
RealAudio1.Source = "http://scripts.euro.real.com/guide/launch.ram?h=rtsp://media5.bloomberg.com/farm/*/encoder/btv_pac.rm" ' h=rtsp://61.172.245.242/xieli/Hostage.rm"
RealAudio1.DoPlay
RealAudio1.SetFullScreen 'realplay 全屏显示
RealAudio1.Width = Screen.Width
RealAudio1.Height = Screen.Height
Do
DoEvents '转让控制权, 以便检测鼠标和按键行为
Loop Until quitflag = True '运行屏幕保护程序直至有鼠标和按键行为
RealAudio1.DoStop
Timer1.Enabled = True '启动Timer1,退出屏幕保护程序
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim X
X = ShowCursor(True) '显示鼠标
End Sub
Private Sub Timer1_Timer()
Unload Me '退出屏幕保护程序
End Sub
Dim quitflag As Boolean '声明终止程序标志变量
'声明隐藏或显示鼠标的API函数
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
'检测鼠标单击
Private Sub Form_Click()
quitflag = True
End Sub
'检测按键
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
quitflag = True
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
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_Load()
Dim X As Long
If App.PrevInstance = True Then '用APP对象的PrevInstance属性
Unload Me '防止同时运行屏幕保护程序的两个实例
Exit Sub
End If
Me.Caption = ""
Me.BorderStyle = 0 '-None 取消标题栏和最大化、最小化按钮
Me.WindowState = 2 '-Maximized 窗体最大化
Timer1.Enabled = False
Timer1.Interval = 1
Me.BackColor = vbBlack
Me.Show '全屏显示Form1窗体 X = ShowCursor(False) '隐藏鼠标
'realplay 连接到一个电视台
RealAudio1.Source = "http://scripts.euro.real.com/guide/launch.ram?h=rtsp://media5.bloomberg.com/farm/*/encoder/btv_pac.rm" ' h=rtsp://61.172.245.242/xieli/Hostage.rm"
RealAudio1.DoPlay
RealAudio1.SetFullScreen 'realplay 全屏显示
RealAudio1.Width = Screen.Width
RealAudio1.Height = Screen.Height
Do
DoEvents '转让控制权, 以便检测鼠标和按键行为
Loop Until quitflag = True '运行屏幕保护程序直至有鼠标和按键行为
RealAudio1.DoStop
Timer1.Enabled = True '启动Timer1,退出屏幕保护程序
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim X
X = ShowCursor(True) '显示鼠标
End Sub
Private Sub Timer1_Timer()
Unload Me '退出屏幕保护程序
End Sub
如:myscr.scr /p 7981(参数一:/p 表示让程序显示在“小屏幕”里,参数二:7981表示“小屏幕”的句柄hWnd。这样屏保就会得知Windows要它显示在“小屏幕”中。)
当Windows需要屏保显示设置对话框时会在调用屏保的后面不加或加上两个参数。
如:myscr.scr或myscr.scr /C 7987(参数一:/C表示让程序显示设置对话框,参数二:7987表示该属性页的句柄。)
当Windows需要运行屏保时会在调用屏保的后面加上一个参数。
如:myscr.scr /S(参数:/S表示让屏保运行。)