首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

使用mediaplayer控件的屏保有关问题

2012-12-16 
使用mediaplayer控件的屏保问题我自己做了个媒体播发器,使用的mediaplayer控件,在播放的时候过一段时间会

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

'添加 Command1 Command2 Text1

Option 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 = &H1

Private Sub Form_Load()
   Command1.Caption = "禁止屏保"
   Text1.Text = "60" '单位为秒,Windows屏保最少1分钟
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Call EnableScreenSave
End Sub

Private Sub Command1_Click()
   If Command1.Caption = "禁止屏保" Then
      Call DisableScreenSave
   Else
      Call EnableScreenSave
   End If
   Command1.Caption = IIf(Command1.Caption = "禁止屏保", "运行屏保", "禁止屏保")
End Sub

Private 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 Sub

Public Sub EnableScreenSave()
   Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
End Sub

Public Sub DisableScreenSave()
   Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
End Sub


[其他解释]
顶cbm666兄的,很经典.
是否也可以这样做,一般只要隔一会触发一下键盘按键,屏保就无法启动了
在timer里控制定时,用sendkeys随便发送个不常用的字母,n年前我做了个简单播放器,就是用sendkeys屏蔽屏保的
[其他解释]
已解决,路过
[其他解释]
谢谢 cbm666  的解答!!!
看了你的解答确实对我很有帮助。
不知道怎么给分?
还有调试好像不成功
说  Call SystemParametersInfo ......编译错误:子程序或函数未定义
另外可能我问问题没问好,表达上有问题,我再啰嗦一下我的问题。
我的小程序是使用的mediaplayer控件的媒体播放器,双击即能全屏,不过我电脑是有屏保的,假定是5分钟后启动屏保,即我全屏看了5分钟后电脑就屏保了,我就要去动一下,再双击播放器,全屏继续看网络电视。


我想解决的屏保问题是, {if 播放器全屏 then 屏蔽屏保 else 继续以前的屏保设置}
看了 cbm666 的程序,应该是很经典的,就是要加几个键什么的,还有就是好像重新设置了屏保的时间,我就是希望播放器能像 PPlive 什么的,能自己判断,不全屏时不影响以前的屏保设置。最好不要加入主观的时间控制,语句越简单越好。
我是菜鸟,没学过VB,都是自学了点。有乱点评请见谅。
请 cbm666 等高手帮个忙,谢谢!
[其他解释]
你把 CBM666 代码中开头的 API声明、常量定义、最后的两个 Sub 一起写到一个 .bas 中。

在进入全屏播放前:Call DisableScreenSave 
退出全屏、关闭媒体、结束程序时:Call EnableScreenSave 


这样不就行了?

[其他解释]

引用:
这是我的教材里面的 教学代码 送给你吧

'添加 Command1 Command2 Text1

Option 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 = &H1

Private Sub Form_Load()
? Command1.Caption = "禁止屏保"
? Text1.Text = "60" '单位为秒,Windows屏保最少1分钟
End Sub

Private Sub Form_Unload(Cancel As Integer)
? Call EnableScreenSave
End Sub

Private Sub Command1_Click()
? If Command1.Caption = "禁止屏保" Then
? ? ? Call DisableScreenSave
? Else
? ? ? Call EnableScreenSave
? End If
? Command1.Caption = IIf(Command1.Caption = "禁止屏保", "运行屏保", "禁止屏保")
End Sub

Private 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 Sub

Public Sub EnableScreenSave()
? Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
End Sub

Public Sub DisableScreenSave()
? Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
End Sub


顶这个
[其他解释]
回 4F Command2 你不点击 就不会改变时间啊

谢谢 asftrhgjhkjlkttttttt 与 东方之珠



[其他解释]
问题解决,非常感谢  cbm666 的解答
[其他解释]
就是点过之后,关闭程序要小卡一下。
问下,判断mediaplayer控件是否为全屏的语句是怎么样的?
[其他解释]
哦,自己已经解决了

热点排行