有什么方法可以在VB.NET中捕获睡眠键(按钮)?

时间:2014-05-03 03:00:16

标签: vb.net button sleep event-capturing

在表格结束时,我想显示一个msgbox,询问我是否真的想让PC进入睡眠模式,如果用户回答“否”,则取消睡眠顺序。

即使应用程序最小化或失焦,我也需要检测到这一点。

感谢。

1 个答案:

答案 0 :(得分:0)

我的键盘上没有睡眠按钮,因此我无法验证, 但这可能值得一试......

在您的活动表单KeyDown事件中,输入如下内容:

Private Sub form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)Handles Me.KeyDown

    Select Case e.KeyCode
        Case Keys.Sleep
            'Do something when the sleep button is pressed

    End Select
End Sub

如果您希望按键不被发送到表单中的活动控件,请添加

e.Handled = True

我已经了解到,为了让主要形式能够捕获按键," KeyPreview"表格的属性必须设置为" True"。如果不是,按键将被发送到具有焦点的控件。

我还看到在KeyDown事件和KeyPress事件中可以检测到哪些键存在差异。例如,您可以在KeyDown事件中测试箭头键,但不能在KeyPress事件中测试,因为它们使用不同的事件参数类型,因此如果您无法找到密钥,则值得检查正在寻找。

当程序不在焦点时使其工作,这似乎更难。以下链接显示了如何注册HotKey,即使您的程序未对焦,也可以捕获它:http://www.kirsbo.com/How_to_add_global_hotkeys_to_applications_in_VB.NET 但是,查看可用的密钥代码来捕获,我无法使用Sleep或Power选项。他们可以在这里找到:http://msdn.microsoft.com/en-us/library/ms927178.aspx

正如我所说,我无法验证这是否有效,但如果可以,请发表评论,以便其他人知道。