2

在表单关闭事件中,我想显示一个消息框,询问我是否真的想让 PC 进入睡眠模式并在用户回答“否”时取消睡眠命令。

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

谢谢。

4

1 回答 1

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 事件中测试,因为它们使用不同的事件参数类型,因此如果您找不到您正在寻找的键,则值得检查两者为了。

至于在程序不在焦点时使其工作,这似乎更加困难。以下链接显示了如何注册一个热键,即使您的程序不在焦点范围内,您也可以捕获该热键:http ://www.kirsbo.com/How_to_add_global_hotkeys_to_applications_in_VB.NET 但是,查看要捕获的可用键码,我不能鳍片睡眠或电源选项。它们可以在这里找到:http: //msdn.microsoft.com/en-us/library/ms927178.aspx

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

于 2014-05-22T01:29:57.253 回答