一个 关屏,关机,重启,硬复位的类~

其中关屏是用hesicong的代码,具体看http://blog.youkuaiyun.com/hesicong/archive/2005/03/18/323310.aspx
硬复位是blaze的 贼狠的招数~改成vb.net的~具体看http://www.cnblogs.com/blaze/archive/2004/10/03/48732.html

Public   Class Power
    
Private Const SETPOWERMANAGEMENT As Int32 = 6147
    
Declare Function ExtEscapeSet Lib "coredll" Alias "ExtEscape" (ByVal hdc As IntPtr, ByVal nEscape As Int32, ByVal cbInput As Int32, ByVal plszInData As Byte(), ByVal cbOutput As Int32, ByVal lpszOutData As IntPtr) As Int32
    
Declare Function GetDC Lib "coredll" (ByVal hwnd As IntPtr) As IntPtr
    
Declare Function KernelIoControl Lib "coredll" (ByVal dwIoControlCode As IntegerByVal lpInBuf As IntPtr, ByVal nInBufSize As IntegerByVal lpOutBuf As IntPtr, ByVal nOutBufSize As IntegerByRef lpBytesReturned As IntegerAs Integer
    
Declare Sub SetCleanRebootFlag Lib "coredll" ()
    
Declare Sub keybd_event Lib "coredll" (ByVal bVK As ByteByVal bScan As ByteByVal dwFlags As ByteByVal dwExtraInfo As Byte)
    
Public Enum VideoPowerState As Integer
        VideoPowerOn 
= 1
        VideoPowerStandBy
        VideoPowerSuspend
        VideoPowerOff
    
End Enum

    
Public Shared Sub ScreenPowerOff()
        
Dim hdc As IntPtr = GetDC(IntPtr.Zero)
        
Dim vpm() As Byte = {120001000, VideoPowerState.VideoPowerOff, 0000}
        ExtEscapeSet(hdc, SETPOWERMANAGEMENT, 
12, vpm, 0, IntPtr.Zero)
    
End Sub

    
Public Shared Sub ScreenPowerOn()
        
Dim hdc As IntPtr = GetDC(IntPtr.Zero)
        
Dim vpm() As Byte = {120001000, VideoPowerState.VideoPowerOn, 0000}
        ExtEscapeSet(hdc, SETPOWERMANAGEMENT, 
12, vpm, 0, IntPtr.Zero)
    
End Sub

    
Public Shared Sub HardReset()
        
Dim IOCTL_HAL_REBOOT As Integer = &H101003C
        
Dim bytesReturned As Integer = 0
        SetCleanRebootFlag()
        KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 
0, IntPtr.Zero, 0, bytesReturned)
    
End Sub

    
Public Shared Sub SoftReset()
        
Dim IOCTL_HAL_REBOOT As Integer = &H101003C
        
Dim bytesReturned As Integer = 0
        KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 
0, IntPtr.Zero, 0, bytesReturned)
    
End Sub

    
Public Shared Sub PowerOff()
        
Dim VK_OFF As Byte = &HDF
        
Dim KEYEVENTF_SILENT As Byte = &H4
        
Dim KEYEVENTF_KEYUP As Byte = &H2
        keybd_event(VK_OFF, 
0, KEYEVENTF_SILENT, 0)
        keybd_event(VK_OFF, 
0, KEYEVENTF_SILENT Or KEYEVENTF_KEYUP, 0)
    
End Sub

End Class

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值