0

我喜欢使用 Windows API 做同样的事情。

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox1.Text = System.Windows.Forms.Clipboard.GetText
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        System.Windows.Forms.Clipboard.SetText(TextBox1.Text)
    End Sub

我在这里查看:http ://www.pinvoke.net/default.aspx/user32/GetClipboardData.html 但我不太确定如何使用它以及如何将文本设置到剪贴板。谁能帮帮我?

4

2 回答 2

2

与此非常相似:

将结果复制到剪贴板

我将它转换为 VB.net 版本,因为问题被标记为:

Public Class Form1
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Ansi)> _
    Public Shared Function OpenClipboard(ByVal hWndNewOwner As IntPtr) As Boolean
    End Function

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Ansi)> _
    Public Shared Function CloseClipboard() As Boolean
    End Function

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Ansi)> _
    Public Shared Function SetClipboardData(ByVal uFormat As UIntPtr, ByVal data As IntPtr) As Boolean
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        OpenClipboard(IntPtr.Zero)
        Dim yourString = "Hello World!"
        Dim ptr As String = Marshal.StringToHGlobalUni(yourString)
        SetClipboardData(13, ptr)
        CloseClipboard()

        Marshal.FreeHGlobal(ptr)
    End Sub
End Class
于 2014-04-07T20:00:29.427 回答
1

有问题的源 C# 版本以一种模糊的方式存在错误,可能导致崩溃。

如果您遇到问题,那么这里是我对原始主题的回复的链接,并引用了一个更强大的替代方案:SetClipboardData + StringToHGlobalUni 是一个糟糕的组合。

于 2014-07-11T14:04:25.407 回答