代码之家  ›  专栏  ›  技术社区  ›  Grant

如何从剪贴板复制、擦除,然后粘贴回剪贴板?

  •  1
  • Grant  · 技术社区  · 15 年前

    SendKeys.SendWait("keys") 转到另一个程序。问题是,有多个字段可能处于活动状态,无法放心地选择单个字段。字段的长度各不相同,所以我的解决方案是复制一个很长的字段,将其复制到剪贴板,然后查看最后一个字符,这样我就知道在另一个程序中选择了哪个字段。不幸的是,这会覆盖剪贴板。

    所以,我需要做这些事情。

    1. 将剪贴板内容(可以是任何内容)复制到变量中。
    2. 发送一堆东西到另一个程序并复制它。然后用它来做其他事情。
    3. 将第一个变量复制回剪贴板。

    理想情况下,它可以复制剪贴板上的任何内容(图像、文本、富格文本)并将其放回原处,就像什么都没发生一样。这是我到目前为止得到的,但它会删除剪贴板中的任何内容,或者用一些特殊的东西替换它,而这些东西不能粘贴回记事本。

    AppActivate("OtherProgram")
    Dim oldClipboard As IDataObject = Clipboard.GetDataObject
    //'Type long stuff, select all, cut to clipboard
    SendKeys.SendWait("{ESC}{F3}1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "+{HOME}^x")
    Dim selectedFieldText As String = Clipboard.GetText
    Dim lastChar As String = selectedFieldText.Substring(selectedFieldText.Length - 1, 1)
    Select Case lastChar
        Case "4"
            //'do nothing. We're in the correct field.
        Case "J"
            SendKeys.SendWait("+{TAB}")
        Case "O"
            SendKeys.SendWait("+{TAB}+{TAB}")
        //'...and so on
    End Select
    //'Send data to the correct field in "OtherProgram"
    Clipboard.SetDataObject(oldClipboard)
    
    3 回复  |  直到 15 年前
        1
  •  2
  •   Byron Whitlock    15 年前

    如果你还没有在这个项目上做太多的编码,我强烈推荐你 AutoIt

    它是一种专门为现有程序的自动化而构建的编程语言。因为您使用的是vb.net,所以它有一个熟悉的基本语法。

    它将单击按钮,处理剪贴板并生成本机可执行文件。

    在其中构建漂亮的gui非常容易。它成熟、稳定、自由!

    check it out .

        2
  •  1
  •   John    15 年前
        3
  •  0
  •   Community Mohan Dere    9 年前

    你不能忠实地将剪贴板恢复到它以前的状态,并且当你尝试这样做时,你将对监视剪贴板事件的其他应用程序造成不可预知的混乱。请看我之前对这个问题的回答: How do I safely and correctly create a backup of the Windows clipboard?