Visual Basic,这个按钮的发送键是什么?

Visual Basic, what is the send key for this button?

这是我指的按钮的 link http://blog.laptopmag.com/wpress/wp-content/uploads/2012/07/ThinkPad-Keyboard-Face-Off_g4-T420.jpg

我试图找到的格式与这种格式一致

{PGUP} = page up button
{LEFT} = left arrow
{ESC} = Escape

有人知道如何将其作为发送密钥发送吗?更喜欢使用这种面向键盘的方法,而不是将右键单击发送到屏幕,因为这会导致通过模拟器屏幕查找位置时出现问题。

为任何能帮助我的人干杯,即使有人确定它不存在,这意味着我可以专注于其他事情:)

编辑:

TL;DR

"+{F10} 可能是您正在寻找的东西来调出所谓的 'context menu' 但是,如果您使用的是 citrix(或类似)应用程序,那么您可能会遇到一些问题焦点。” :)

所以我自己发现了什么。有几种方法可以发送我现在知道的 'context menu' 键。但是只有一个适用于我的情况。 如果我能够为 sendkey 编写代码,那么 drarig29 的答案可能有效,但对于我正在使用的应用程序(不幸的是,BluePrism 我不能那样做)这是我的解决方案(不起作用) “+{F10}” 所以 '+' = SHIFT 和 F10 = F10 按钮。因此,shift F10 将适用于正在寻找一种方法来调出 'right-click menu' 的人,但这对我不起作用,尽管我不确定为什么。我正在通过 citrix(模拟器屏幕)自动化应用程序,即使我在屏幕上单击鼠标并使用 sendKey“+{F10}”,它也不会使上下文菜单屏幕出现在应用程序上。所以我手动尝试了一下,很有趣,它也无法调出上下文菜单。然后我发现如果您右键单击屏幕区域并出现菜单,那么发送键会突然毫无障碍地工作。我认为问题在于某些 windows 处于焦点状态而另一些则没有,但我必须解决这个问题以确保看到我将 'click' 发送到屏幕的正确区域时它应该是焦点。但无论如何为帮助欢呼:)

这是上下文菜单键。它的密钥代码是 93。要使用其密钥代码发送密钥,请使用:

<DllImport("user32.dll")> _
Private Shared Function keybd_event(bVk As Byte, bScan As Byte, dwFlags As UInteger, dwExtraInfo As Integer) As Boolean
End Function

Const KEYEVENTF_KEYDOWN = &H0
Const KEYEVENTF_KEYUP = &H2

Private Sub SendKey(KeyCode As Integer)
    keybd_event(CByte(KeyCode), 0, KEYEVENTF_KEYDOWN, 0)
    keybd_event(CByte(KeyCode), 0, KEYEVENTF_KEYUP, 0)
End Sub

您必须导入 System.Runtime.InteropServices (Imports System.Runtime.InteropServices)。

有了这个,要发送上下文菜单键,请使用 SendKey(93)

编辑:

Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)

Const MOUSEEVENTF_LEFTDOWN As Int32 = &H2
Const MOUSEEVENTF_LEFTUP As Int32 = &H4
Const MOUSEEVENTF_RIGHTDOWN As Int32 = &H8
Const MOUSEEVENTF_RIGHTUP As Int32 = &H10

Enum ClickType
    Left = 0
    Right = 1
End Enum

Sub SendClick(ClickType As ClickType, DestX As Integer, DestY As Integer)
    Select Case ClickType
        Case ClickType.Left
            Cursor.Position = New Point(DestX, DestY)
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
        Case ClickType.Right
            Cursor.Position = New Point(DestX, DestY)
            mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
            mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
    End Select
End Sub

像这样使用以前的方法:SendClick(ClickType.Left, 20, 20)