我自己做了个媒体播发器,使用的mediaplayer控件,在播放的时候过一段时间会屏保,老要时不时的去动一下鼠标防止屏保,希望mediaplayer控件在全屏播放时,能阻止屏保出现。在窗口模式下依然运行屏保。
   我不会VB,只是想自己做个播放器看网络电视。
   有看到这么解决的  
      "让系统认为已经处于屏保状态,它就不会再次激活屏保了:   
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,   1   ,nil   ,   0);  "
   不知道是什么语言。
   能高手能帮我搞定吗?用VB,谢谢了
   最好说的稍微详细点,我是超级菜鸟。

解决方案 »

  1.   

    这是我的教材里面的 教学代码 送给你吧'添加 Command1 Command2 Text1Option Explicit
    '*****************屏保控制时间与开关****************************************
    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
    Const SPI_SETSCREENSAVEACTIVE = 17
    Const SPI_SETSCREENSAVETIMEOUT = 15
    Const SPIF_SENDWININICHANGE = &H2
    Private Const SPIF_UPDATEINIFILE = &H1Private Sub Form_Load()
       Command1.Caption = "禁止屏保"
       Text1.Text = "60" '单位为秒,Windows屏保最少1分钟
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       Call EnableScreenSave
    End SubPrivate Sub Command1_Click()
       If Command1.Caption = "禁止屏保" Then
          Call DisableScreenSave
       Else
          Call EnableScreenSave
       End If
       Command1.Caption = IIf(Command1.Caption = "禁止屏保", "运行屏保", "禁止屏保")
    End SubPrivate Sub Command2_Click()
       If Val(Text1.Text) <= 60 Then Text1.Text = "60"
       Call SetScreenSaveTimeout(Val(Text1.Text))
    End Sub'*****************屏保控制时间与开关****************************************
    Public Sub SetScreenSaveTimeout(ByVal BySecond As Long)
       Call SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, BySecond, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
    End SubPublic Sub EnableScreenSave()
       Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
    End SubPublic Sub DisableScreenSave()
       Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
    End Sub
      

  2.   

    顶cbm666兄的,很经典.
    是否也可以这样做,一般只要隔一会触发一下键盘按键,屏保就无法启动了
    在timer里控制定时,用sendkeys随便发送个不常用的字母,n年前我做了个简单播放器,就是用sendkeys屏蔽屏保的
      

  3.   

    谢谢 cbm666  的解答!!!
    看了你的解答确实对我很有帮助。
    不知道怎么给分?
    还有调试好像不成功
    说  Call SystemParametersInfo ......编译错误:子程序或函数未定义
    另外可能我问问题没问好,表达上有问题,我再啰嗦一下我的问题。
    我的小程序是使用的mediaplayer控件的媒体播放器,双击即能全屏,不过我电脑是有屏保的,假定是5分钟后启动屏保,即我全屏看了5分钟后电脑就屏保了,我就要去动一下,再双击播放器,全屏继续看网络电视。
    我想解决的屏保问题是, {if 播放器全屏 then 屏蔽屏保 else 继续以前的屏保设置}
    看了 cbm666 的程序,应该是很经典的,就是要加几个键什么的,还有就是好像重新设置了屏保的时间,我就是希望播放器能像 PPlive 什么的,能自己判断,不全屏时不影响以前的屏保设置。最好不要加入主观的时间控制,语句越简单越好。
    我是菜鸟,没学过VB,都是自学了点。有乱点评请见谅。
    请 cbm666 等高手帮个忙,谢谢!
      

  4.   

    你把 CBM666 代码中开头的 API声明、常量定义、最后的两个 Sub 一起写到一个 .bas 中。在进入全屏播放前:Call DisableScreenSave 
    退出全屏、关闭媒体、结束程序时:Call EnableScreenSave 
    这样不就行了?
      

  5.   

    回 4F Command2 你不点击 就不会改变时间啊谢谢 asftrhgjhkjlkttttttt 与 东方之珠
      

  6.   

    问题解决,非常感谢  cbm666 的解答
      

  7.   

    就是点过之后,关闭程序要小卡一下。
    问下,判断mediaplayer控件是否为全屏的语句是怎么样的?