【问题标题】:There's any way to capture sleep key(button) in VB.NET?有什么方法可以在 VB.NET 中捕获睡眠键(按钮)?
【发布时间】:2014-05-03 03:00:16
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 谢谢,阅读那个链接我发现了 SystemEvents.PowerModeChanged 事件,我会测试一下。
  • 如果您找到解决方案,请告诉我们。您可以接受自己的答案。
  • @Zairja - 嗨,还没有测试;我只是想制作一个愚蠢的应用程序,当我在 Firefox 中进行某些下载时会警告我,因为我有在离开 PC 时按睡眠按钮的习惯,但我找到了一个插件。无论如何,我想我会创建那个应用程序,因为有时我在玩某些游戏时会误按睡眠按钮。

标签: vb.net button sleep event-capturing


【解决方案1】:

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

在您的活动表单 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多