2013-07-26 64 views
0

我正在開發一個應用程序,並且有一部分代碼只在屏保運行時才運行,但我無法找到一種方法來實現它,我搜索了整個網頁,我只找到C++和c#的解決方案。我知道在C++的時候可以用SystemParametersInfo找出來,但是在Visual Basic 2012中我不知道有什麼辦法,我試過用它,但是說它沒有聲明。屏幕保護程序事件VB2012窗體

有什麼我必須導入?有沒有辦法找出屏幕保護程序是否在運行?

+0

[事件處理程序「錯誤」使用VB.NET與Windows窗體的可能的副本)(http://stackoverflow.com/questions/17893513/eventhandler-bug-using-vb-net-with-windows-forms) –

回答

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事件的處理程序等等,當我得到用戶活動(這是什麼停止屏幕保護程序),我知道什麼時候屏幕保護程序停止。

+0

This實際上是正確的解決方案。 +1查找和分享您自己的問題的答案! –

相關問題