关闭显示器 V1.0(增强版)

一、应用场景:

        当你离开电脑一小会儿时,为了省电和节约电池电量,又不想改变系统电源选项,那么这个程序可以帮助你快速关闭显示器。

二、系统支持:

         我是在WinXP、Win7下使用的。

三、本程序的特点:

       

         1.点击马上可以关闭显示器,随便动一下鼠标或按键显示器即可重新开启;

         2.加入了循环关闭机制,可以防止因意外的碰触或其他程序的影响而使显示器重新开启(这些情况下3s之内会重新关闭显示器);

         3.加入了系统空闲时间的检查,当你在真正使用电脑的时候,程序可以智能退出;

         4.本程序开源(遵守LGPL),你可以加入自己想要的功能。

三、程序及工程源码下载:

         1.程序:
            http://dl.dbank.com/c0a1h5wfw3

         2.工程源码:

            http://download.csdn.net/detail/greaterforever/3710103 

            请使用Microsoft Visual Basic 6.0打开。

<代码片段>

''关闭显示器 V1.0
''License: LGPL
Option Explicit

''Forces the system to be in the working state by resetting the system idle timer.
Private Const ES_SYSTEM_REQUIRED = &H1

''关闭显示器
Private Const MONITOR_OFF = 2&
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MONITORPOWER = &HF170&

''Enables applications to inform the system that it is in use,
''thereby preventing the system from entering the sleeping power state or turning off the display while the application is running.
Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal esFlag As Integer) As Integer

''This function sends the specified message to a window or windows.
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long

''获取系统空闲时间
Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Type LASTINPUTINFO
    cbSize As Long
    dwTime As Long
End Type

''智能退出标志位
''1 关屏状态
''2+ 关屏后被唤醒
Dim auto_exit As Integer

Private Sub cmdCloseMonitor_Click()
    Call SendMessage(frmMain.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF)
    auto_exit = 1 '关屏状态
End Sub

Private Sub cmdCloseAll_Click()
    End
End Sub

Private Sub Form_Load()
    Call cmdCloseMonitor_Click
End Sub

Private Sub Timer1_Timer()
    ''获取系统剩余时间后重新关闭显示器
    Dim lii As LASTINPUTINFO
    lii.cbSize = Len(lii)
    If GetLastInputInfo(lii) Then
        If (GetTickCount - lii.dwTime) \ 1000 > 3 Then '系统空闲大于3秒
            Call cmdCloseMonitor_Click
        ElseIf auto_exit >= 1 Then '关屏后被唤醒
            auto_exit = auto_exit + 1
            If auto_exit >= 4 Then cmdCloseAll_Click '检测3次后退出程序
        End If
    End If

    Call SetThreadExecutionState(ES_SYSTEM_REQUIRED)  '重置系统空闲计时器
End Sub


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值