【问题标题】:Assign keyboard shortcuts to buttons in Powershell script为 Powershell 脚本中的按钮分配键盘快捷键
【发布时间】:2015-12-08 00:52:59
【问题描述】:

我想做的是为快捷键分配一个按钮,例如 $TurnOnButton 作为键“Q”,$TurnOffButton 作为我键盘上的键“W”。

所以基本上,在我下面的例子中。当脚本运行并且表单存在时,我可以按下键盘上的“Q”按钮来运行计算器,然后按下“W”按钮来终止它。

PowerShell 可以做到这一点吗?

代码示例:

Add-Type -AssemblyName System.Windows.Forms

function Return-TurnOff
{
    $x = Stop-Process -ProcessName calc
    $x
}

function Return-TurnOn
{
    $x = Start-Process calc
    $x
}

$form = New-Object System.Windows.Forms.Form 
$form.Text = "Title of the form"
$form.Size = New-Object System.Drawing.Size(300,200) 
$form.minimumSize = New-Object System.Drawing.Size(300,200) 
$form.maximumSize = New-Object System.Drawing.Size(300,200) 
$form.StartPosition = "CenterScreen"

$TurnOffButton = New-Object System.Windows.Forms.Button
$TurnOffButton.Location = New-Object System.Drawing.Point(10,125)
$TurnOffButton.Size = New-Object System.Drawing.Size(55,25)
$TurnOffButton.Text = "Turn Off"
$TurnOffButton.Add_Click({Return-TurnOff})
$form.AcceptButton = $TurnOffButton
$form.Controls.Add($TurnOffButton)

$TurnOnButton = New-Object System.Windows.Forms.Button
$TurnOnButton.Location = New-Object System.Drawing.Point(10,65)
$TurnOnButton.Size = New-Object System.Drawing.Size(55,25)
$TurnOnButton.Text = "Turn On"
$TurnOnButton.Add_Click({Return-TurnOn})
$form.AcceptButton = $TurnOnButton
$form.Controls.Add($TurnOnButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(215,125)
$CancelButton.Size = New-Object System.Drawing.Size(55,25)
$CancelButton.Text = "Cancel"
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,15) 
$label.Size = New-Object System.Drawing.Size(280,20) 
$label.Text = "Label for textbox:"
$form.Controls.Add($label) 

$textBox = New-Object System.Windows.Forms.TextBox 
$textBox.Location = New-Object System.Drawing.Point(10,35) 
$textBox.Size = New-Object System.Drawing.Size(260,20) 
$form.Controls.Add($textBox) 

$form.Topmost = $True

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

【问题讨论】:

    标签: forms powershell button keyboard-shortcuts


    【解决方案1】:

    如果您不介意按钮上的标签包含与按钮相对应的字母并按 Alt 键,那么这很容易,只需在您想要的按钮文本中的字母前加一个“&”成为加速器:

    $TurnOnButton.Text = "Turn O&n"
    $TurnOffButton.Text = "Turn O&ff"
    

    会让 Alt-N 执行 Turn On,Alt-F 执行 Turn Off。

    一个更复杂的解决方案是注册键盘按下,但它可以让你处理任何击键,无论是否按下 Alt。 $form|gm -MemberType event key* 将显示名称以“Key”开头的事件。然后,您可以 google 了解如何使用 WinForms 处理来自 Powershell 的事件。

    【讨论】:

    • 感谢 user2460798!老实说,我什至没有想过在按钮上添加 Alt 快捷键。稍后我将探索其他选项,因为它更多是我正在寻找的,但我现在会坚持使用您的 Alt 解决方案。非常感谢。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2020-08-12
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多