屏幕保护程序事件VB2012窗体

时间:2013-07-26 01:54:44

标签: .net windows vb.net winforms screensaver

我正在开发一个应用程序,有一部分代码我只想在屏幕保护程序运行但我无法找到方法时才能运行,我在网上搜索,我只找到解决方案c ++和c#。

我知道在C ++中何时可以使用SystemParametersInfo来查找,但在Visual Basic 2012中我不知道某种方式,我尝试使用它,但它说它没有声明。

我必须要导入一些东西吗?有没有办法找出屏幕保护程序是否正在运行?

1 个答案:

答案 0 :(得分:1)

我找到了这种方法,可以检测屏幕保护程序何时启动和停止:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

    Const WM_SYSCOMMAND As Integer = &H112
    Const SC_SCREENSAVE As Integer = &HF140

    MyBase.WndProc(m)
    If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SC_SCREENSAVE Then
        MsgBox("Capturado screensaver" & Now.ToLongTimeString)
        AddHandler Application.Idle, AddressOf Application_Idle
    End If
End Sub

Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs)

    MsgBox("Capturada actividade" & Now.ToLongTimeString)
    RemoveHandler Application.Idle, AddressOf Application_Idle
End Sub

基本上我所做的就是检测屏幕保护程序激活,那时我为Idle事件创建了一个处理程序,这样,当我得到用户活动(停止屏幕保护程序)时,我知道屏幕保护程序什么时候停止