如何使用windows paste命令将文本粘贴到c#中的其他应用程序?

时间:2010-09-05 15:38:16

标签: c#

如何使用windows pastse命令将interop粘贴到c#中的其他应用程序?

调用互操作?

我的意思是如何编程c#右键单击过去的文本

4 个答案:

答案 0 :(得分:8)

在某些情况下这可能有点棘手,但它实际上非常简单易行。下面是一个如何使用文本框获取文本的示例(在本例中称为uxData),从代码打开记事本,以及将剪贴板中的文本粘贴到记事本。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }

    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool BringWindowToTop(IntPtr hWnd);

    private void OnClicked_PasteToNotepad(object sender, EventArgs e) {

        // Let's start Notepad
        Process process = new Process();
        process.StartInfo.FileName = "C:\\Windows\\Notepad.exe";
        process.Start();

        // Give the process some time to startup
        Thread.Sleep(10000);

        // Copy the text in the datafield to Clipboard
        Clipboard.SetText(uxData.Text, TextDataFormat.Text);

        // Get the Notepad Handle
        IntPtr hWnd = process.Handle;

        // Activate the Notepad Window
        BringWindowToTop(hWnd);

        // Use SendKeys to Paste
        SendKeys.Send("^V");
    }
}

现在,假设您要粘贴到特定的字段中。这是您需要使用FindWindow和FindWindowEx来获取要粘贴的字段的句柄的位置。将数据复制到剪贴板后,可以执行以下步骤。

  1. 获取流程句柄
  2. 将流程置于焦点(激活它)
  3. 找到您要粘贴到的字段的句柄
  4. 将焦点设置为该字段
  5. 使用SendKeys从剪贴板粘贴

答案 1 :(得分:2)

您可以在System.Windows.Forms中使用Clipboard类来检查剪贴板包含的数据类型,并在需要时获取此数据。 Windows中的剪贴板包含“待粘贴”数据,可以是位图,文本,HTML,RTF等。

“粘贴”是什么意思并不十分清楚。是否应该在点击按钮,按下按键或其他东西时发生“粘贴”?文本框控件(richbox,combobox等)通常响应Ctrl-V(标准粘贴击键),并将从剪贴板中以适当的格式(plain,RTF)自动插入文本,因此您无需执行任何操作手动

在所有其他情况下,您需要确定您感兴趣的数据,并使用适当的methods从剪贴板中提取数据。

答案 2 :(得分:0)

这是使用P / Invoke从Windows剪贴板获取数据的方法。这就是我可以给你的所有内容,而没有更多关于你想要粘贴它的信息。

 [DllImport("ole32.dll")]
    static extern int OleGetClipboard([MarshalAs(UnmanagedType.IUnknown)]out object ppDataObj);

string text = ppDataObj as string;
//paste it in your application somewhere

答案 3 :(得分:0)

从右键点击粘贴

获取文字
using System.Windows.Forms;

public static string GetControlV()
{
    Textbox i = new Textbox();
    i.Paste();
    return i.Text;
}
  1. 声明新的文本框对象
  2. 调用它的Paste()方法 - 粘贴()内置于Windows窗体中的文本框组件,并将从右键单击复制复制的文本放入文本框中。
  3. 返回文本框的Text属性。
  4. 您需要添加对System.Windows.Forms.dll的引用。以防万一... 右键单击解决方案探索“参考”。 单击“添加引用”。 在“.NET”选项卡下,您应该能够找到该DLL。 那么使用法则应该有效。