Na tento problém jsem jednou narazil, potřeboval jsem udržet mobil při životě na minimálním osvětlení, zatímco jsem timerem čekal na nějakou dobu. Nevyhnul jsem se využití Windows API:
Imports System.Runtime.InteropServices
Public Class SystemCalls
'See more at http://msdn2.microsoft.com/en-us/library/ms927178.aspx
Public Const VK_NONAME As Byte = 252
' Do nothing
Public Const VK_ESC As Byte = 27
' Smartphone back-button
Public Const VK_F4 As Byte = 115
' Home Screen
Public Const VK_APP6 As Byte = 198
' Lock the keys on Smartphone
Public Const VK_F22 As Byte = 133
' Lock the keys on PocketPC (VK_KEYLOCK)
Public Const VK_F16 As Byte = 127
' Toggle Speakerphone
Public Const VK_OFF As Byte = 127
' Power button
''' <summary>
''' Puts `key` into to global keyboard buffer
''' </summary>
''' <param name="key"></param>
Public Shared Sub SendKey(ByVal key As Byte)
Const KEYEVENTF_KEYUP As Integer = 2
Const KEYEVENTF_KEYDOWN As Integer = 0
keybd_event(key, 0, KEYEVENTF_KEYDOWN, 0)
keybd_event(key, 0, KEYEVENTF_KEYUP, 0)
End Sub
<DllImport("coredll", SetLastError:=True)> _
Private Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
End Sub
End Class
Poté stačí timerem co nějakou dobu (třeba sekundu) spouštět tuto proceduru (Imituje zmáčknutí tlačítka v parametru přes Windows API - VK_NONAME znamená, že se nic nestane, pouze se oživí podsvícení a podobně...)
SystemCalls.SendKey(SystemCalls.VK_NONAME)
Hodně štěstí...
|