在表格结束时,我想显示一个msgbox,询问我是否真的想让PC进入睡眠模式,如果用户回答“否”,则取消睡眠顺序。
即使应用程序最小化或失焦,我也需要检测到这一点。
感谢。
答案 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
正如我所说,我无法验证这是否有效,但如果可以,请发表评论,以便其他人知道。