【问题标题】:screensaver events VB2012 windows forms屏幕保护程序事件VB2012 windows窗体
【发布时间】:2013-07-26 01:54:43
【问题描述】:

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

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

有什么我必须导入的吗?有没有办法查看屏幕保护程序是否正在运行?

【问题讨论】:

标签: .net windows vb.net winforms screensaver


【解决方案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 事件创建了一个处理程序,因此,当我获得用户活动(这是停止屏幕保护程序的原因)时,我知道屏幕保护程序何时停止。

【讨论】:

  • 这其实是正确的解决方案。 +1 用于查找和分享您自己问题的答案!
猜你喜欢
  • 2010-09-21
  • 2013-04-29
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
相关资源
最近更新 更多