繁体   English   中英

在 Powershell 中获取表单上的按键

Getting keypress on a Form in Powershell

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我试着使用一些Windows窗体库,这使得在PowerShell中的图像浏览器,我已经可以存储阵列中的图像的位置,但现在我想它的按键检测RightLeft到阵列中的位置之间的变化

这是我正在使用的代码:

param(
[parameter (Mandatory=$false, position=0, ParameterSetName='url')]
[string]$url = ''
)
Add-Type -AssemblyName 'System.Windows.Forms'
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.Application]::EnableVisualStyles()
Function Load-Images{
    param (
        [parameter (Mandatory=$true, position=0, ParameterSetName='path')]
        $path
    )

    $screen = [System.Windows.Forms.Screen]::AllScreens
    $form = new-object Windows.Forms.Form

    $form.Text = "Image Viewer"
    $form.Size = New-Object System.Drawing.Size($screen.WorkingArea[0].Width, $screen.WorkingArea[0].Height)
    
    $pictureBox = new-object Windows.Forms.PictureBox
    $pictureBox.Size = New-Object System.Drawing.Size($screen.WorkingArea[0].Width, $screen.WorkingArea[0].Height)
    
   
    $pictureBox.Image = $path
    $pictureBox.SizeMode = 'Zoom'
    $pictureBox.Anchor = 'Top,Left,Bottom,Right'

    $form.controls.add($pictureBox)
    $form.Add_Shown( { $form.Activate() } )

    $form.ShowDialog()
    $img.dispose()
}

if(!$url) {
    $dir = Get-Location

    $Files = @(Get-ChildItem "$($dir.Path)\*" -Include *.jpg, *.jpeg, *.png)
    $maxSize = $Files.Length
    Write-Output $maxSize
    Write-Output $Files.Fullname
    $img = [System.Drawing.Image]::Fromfile((Get-Item $Files.Fullname[0]))
    Load-Images -path $img

}
1 个回复

继续我的评论。 您所追求的根本不是 PowerShell 所特有的。 这是一个UX/UI设计/属性/事件项目。

例如,这里展示了添加和使用属性/事件设置来监视定义的按键。 只需运行该函数,调用该函数,然后按“Enter”或“Esc”,或单击“确定”即可触发这些事件。

function Start-CreateForm 
{ 
 
    #Import Assemblies 
    Add-Type -AssemblyName System.Windows.Forms,
                           System.Drawing
 
    $Form1                  = New-Object System.Windows.Forms.Form 
    $OKButton               = New-Object System.Windows.Forms.Button 
    $InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
    $Label1                 = New-Object System.Windows.Forms.Label
    $textBox1               = New-Object System.Windows.Forms.TextBox
    $Field1 = ""
 
    # Check for ENTER and ESC presses
    $Form1.KeyPreview = $True
    $Form1.Add_KeyDown({if ($PSItem.KeyCode -eq "Enter") 
        {
        # if enter, perform click
        $OKButton.PerformClick()
        }
    })
    $Form1.Add_KeyDown({if ($PSItem.KeyCode -eq "Escape") 
        {
        # if escape, exit
        $Form1.Close()
        }
    })
 
    # The action on the button
    $handler_OK_Button_Click= 
    { 
        $Field1 = $textBox1.Text
        $Field1
     
        # Returns a message of no data
        if ($Field1 -eq "") {[System.Windows.Forms.MessageBox]::Show("You didn't enter anything!", "Data")}
     
        # Returns what they types. You could add your code here
        else {[System.Windows.Forms.MessageBox]::Show($Field1, "Data")}  
    }
 
    $OnLoadForm_StateCorrection= 
    {
    $Form1.WindowState = $InitialFormWindowState 
    }
 
 
    # Form Code 
    $Form1.Name = "Data_Form"
    $Form1.Text = "Data Form" 
    $Form1.MaximizeBox = $false #lock form
    $Form1.FormBorderStyle = 'Fixed3D'
    # None,FixedDialog,FixedSingle,FixedToolWindow,Sizable,SizableToolWindow
 
    # Icon
    $Form1.Icon = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command powershell).Path)
    # $NotifyIcon.Icon = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command powershell).Path)
 
    $Form1.DataBindings.DefaultDataSourceUpdateMode = 0 
    $Form1.StartPosition = "CenterScreen"# moves form to center of screen
    $System_Drawing_Size = New-Object System.Drawing.Size 
    $System_Drawing_Size.Width = 300 # sets X
    $System_Drawing_Size.Height = 150 # sets Y
    $Form1.ClientSize = $System_Drawing_Size
 
    $OKButton.Name = "OK_Button" 
    $System_Drawing_Size = New-Object System.Drawing.Size 
    $System_Drawing_Size.Width = 45
    $System_Drawing_Size.Height = 23
 
    $OKButton.Size = $System_Drawing_Size 
    $OKButton.UseVisualStyleBackColor = $True
    $OKButton.Text = "OK"
    $System_Drawing_Point = New-Object System.Drawing.Point 
    $System_Drawing_Point.X = 30 
    $System_Drawing_Point.Y = 113
 
    $OKButton.Location = $System_Drawing_Point 
    $OKButton.DataBindings.DefaultDataSourceUpdateMode = 0 
    $OKButton.add_Click($handler_OK_Button_Click)
    $Form1.Controls.Add($OKButton)
 
    $InitialFormWindowState = $Form1.WindowState 
    $Form1.add_Load($OnLoadForm_StateCorrection) 
 
    $Label1.Location = New-Object System.Drawing.Point(10,20)
    $Label1.Size = New-Object System.Drawing.Size(280,20)
    $Label1.Text = "Enter data here:"
    $Form1.Controls.Add($Label1)
  
    $textBox1.TabIndex = 0 # Places cursor in field
    $textBox1.Location = New-Object System.Drawing.Point(10,40)
    $textBox1.Size = New-Object System.Drawing.Size(260,20)
    $Form1.Controls.Add($textBox1)
    $Form1.Topmost = $True # Moves form to top and stays on top
    $Form1.Add_Shown({$textBox1.Select()})
 
    # Show Form 
    $Form1.ShowDialog()
}

对于您的用例,您只需要使用所需的键盘细节。

1 在 PowerShell 中读取单个按键

使用 PowerShell,我想在按键发生时读取按键的值,而无需用户按 Enter。 例如,如果用户按“1”,我希望 PowerShell 脚本立即对选择做出反应,而无需“输入”。 我的研究出现了 ReadKey, $input = $Host.UI.RawUI.ReadKey('Incl ...

2 检测表单中的按键?

我正在尝试让网页检测特定表单中的用户按键(每个按键都会调用一个函数)。 但是我的代码不起作用(控制台永远不会打印到日志): ...

3 表单中未启用按键

我刚刚解决了消除按命令指挥仆人的延迟的问题,这是我在上一篇文章中所要求的。 您对我有很大的帮助,但是现在我遇到了一个新问题:当我连接到串行端口时,我开始按下键,似乎该窗体在接收命令时没有优先级,但是优先级是按钮“断开连接”,唯一保持活动状态。 你能帮助我吗? ...

4 在textarea中的按键上提交表单

我一直在尝试做一些基本的事情,例如在回车(和Shift + Enter)上提交文本区域,这确实让我感到困惑–我在此问题上已经在Stackoverflow上咨询过以前的主题,但是以前的解决方案似乎都没有诀窍。 $('#form').submit(); 做这份工作? 这既不是this.form ...

5 在Visual Basic中按键显示表单

对于我使用Visual Basic 2010 Express制作的程序,我想默认隐藏(最小化)表单。 我发现了如何做到这一点,所以这不是问题。 但是,当我按下“ F12”键时,我希望再次显示该表格。 这里的一个困难是没有集中在表格上。 有谁知道如何在不关注应用程序的情况下再次显示表单 ...

6 检测Web表单中的按键

我有一个将文本模式设置为多个的Web窗体文本框。 最近,一个功能停止工作,我不知道发生了什么。 当用户连续两次按下[Return]键时,网络表单将通过客户端JavaScript触发提交按钮事件。 像这样: 代码没有更改,我们的用户在W7上使用IE8,我怀疑自从使用W7或IE8后,它 ...

7 在按键事件中获取按键字符

如何获得关键字符,即使Window窗体不清晰? 我有一个窗口窗体,在这里我写了一个按键事件。 仅当窗体具有焦点时,它将起作用。 但是我想知道即使不是重点突出的形式也可以获得关键字符。 提前致谢。 ...

8 Powershell-隐藏的Windows中的键盘按键

我正在实习,我必须编写一个powershell脚本来自动执行telnet脚本连接。 我用cmd来做,我发送击键来像这样连接: $cmd = 'C:\\Windows\\System32\\cmd.exe' Start-Process $cmd -Verb runAs $wshell = N ...

9 在PowerShell中读取单个按键(整数)

我知道这个问题,但它没有回答我目前的问题。 我知道当前行给了我下一个按键: 例如,如果我按1 ,我得到1 。 但这是一个字符串(好吧,实际上是一个字符),我希望数字为整数。 我试着用: 和: 但是在这两行中,如果按1 ,则会得到49 。 我知道我可 ...

10 隐藏表单时获取按键事件

我正在用C#制作一个记忆游戏,在表格上会出现一系列随机字符几秒钟,然后表格会隐藏起来,用户必须按键盘上的字符,问题是它没有隐藏表单时注册按键。 我尝试过this.Focus(); 但它仍然没有用.. 隐藏我使用的表单: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM