无法使用 (SendKeys.Send) 粘贴字符串

Posted

技术标签:

【中文标题】无法使用 (SendKeys.Send) 粘贴字符串【英文标题】:Can't paste string using (SendKeys.Send) 【发布时间】:2019-07-19 11:40:21 【问题描述】:

我正在尝试创建一个允许我运行事件的应用程序,即使该应用程序不在焦点上。当我使用 [ctrl + alt + V] 触发事件时,它会在数组中选择一个随机字符串并将其粘贴到当前选定的输入框中(这可能是在 Firefox、记事本、游戏中......)。但是,应用程序不会粘贴剪贴板中的信息。我正在使用SendKeys.Send("^v") 复制 [ctrl + V]。

任何改进代码或解决问题的建议都将不胜感激。

Public Class Form

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Tmr.Interval = 100
    Tmr.Start()
End Sub

Private Sub Tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tmr.Tick

    If CBool(GetAsyncKeyState(Keys.ControlKey)) And CBool(GetAsyncKeyState(Keys.V)) Then

        ' Create Variables for Array
        Dim PhrasesArray() As String = "1", "2", "3", "4"
        Dim Rand As New Random()
        Dim Index As Integer = Rand.Next(0, PhrasesArray.Length - 1)
        Dim SelectedValue = PhrasesArray(Index)

        My.Computer.Clipboard.SetText(SelectedValue) ' Copy To clipboard
    End If

End Sub

End Class

更新:我都试过了:SendKeys.Send("^(v)")SendKeys.Send("^v") 他们都不会触发粘贴命令。 我尝试SendKeys.Send("ENTER") 来查看是否有任何 SendKeys 有效,并且它确实有效。应用程序使用SendKeys.Send("ENTER") 触发了回车键。

【问题讨论】:

什么意思?它不发送任何密钥,或者它发送的正是 ^v 我想基本上触发粘贴命令来粘贴复制到剪贴板的文本。粘贴的快捷键是[ctrl + v],这也是我为什么要使用sendkeys的原因。 【参考方案1】:

如果你想发送 Ctrl + V,你可以使用SendKeys.Send("^(v)")


检查您要发送的每个不同命令键的文档:https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/sendkeys-statement

【讨论】:

不幸的是它不起作用。我都试过了:SendKeys.Send("^(v)")SendKeys.Send("^v") 它不会触发粘贴命令。感谢您尝试帮助我。 我将您的答案标记为正确,因为它是正确的。它确实奏效了。我自己的代码也有效。问题在于,显然 alt 键触发了应用程序中上下文菜单的一部分,删除了我即将发布工作的选定区域。

以上是关于无法使用 (SendKeys.Send) 粘贴字符串的主要内容,如果未能解决你的问题,请参考以下文章

C# SendKeys用法

C# 模拟键盘操作SendKey(),SendKeys() / C# SendKeys用法

vc中应该如何向窗口发送组合键消息

VB中复制-粘贴-剪切键实现

以编程方式按“右移”键

C# WinForm程序怎么用代码控制 浏览器 后退和向前