各位高手,我用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

解决方案 »

  1.   

    当Windows需要屏保显示在“小屏幕”中时会在调用屏保的后面加上两个参数。 
      如:myscr.scr /p 7981(参数一:/p 表示让程序显示在“小屏幕”里,参数二:7981表示“小屏幕”的句柄hWnd。这样屏保就会得知Windows要它显示在“小屏幕”中。) 
      当Windows需要屏保显示设置对话框时会在调用屏保的后面不加或加上两个参数。 
      如:myscr.scr或myscr.scr /C 7987(参数一:/C表示让程序显示设置对话框,参数二:7987表示该属性页的句柄。) 
      当Windows需要运行屏保时会在调用屏保的后面加上一个参数。 
      如:myscr.scr /S(参数:/S表示让屏保运行。)
      

  2.   

    看完这个就明白了:http://www.tongyi.net/article/20000819/20000819327.shtml