我正在開發一個應用程序,並且有一部分代碼只在屏保運行時才運行,但我無法找到一種方法來實現它,我搜索了整個網頁,我只找到C++和c#的解決方案。我知道在C++的時候可以用SystemParametersInfo
找出來,但是在Visual Basic 2012中我不知道有什麼辦法,我試過用它,但是說它沒有聲明。屏幕保護程序事件VB2012窗體
有什麼我必須導入?有沒有辦法找出屏幕保護程序是否在運行?
我正在開發一個應用程序,並且有一部分代碼只在屏保運行時才運行,但我無法找到一種方法來實現它,我搜索了整個網頁,我只找到C++和c#的解決方案。我知道在C++的時候可以用SystemParametersInfo
找出來,但是在Visual Basic 2012中我不知道有什麼辦法,我試過用它,但是說它沒有聲明。屏幕保護程序事件VB2012窗體
有什麼我必須導入?有沒有辦法找出屏幕保護程序是否在運行?
我發現這種方式,它可以檢測屏幕保護程序啓動時,停止:
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
事件的處理程序等等,當我得到用戶活動(這是什麼停止屏幕保護程序),我知道什麼時候屏幕保護程序停止。
This實際上是正確的解決方案。 +1查找和分享您自己的問題的答案! –
[事件處理程序「錯誤」使用VB.NET與Windows窗體的可能的副本)(http://stackoverflow.com/questions/17893513/eventhandler-bug-using-vb-net-with-windows-forms) –