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

zXX*_*XXz 3 c#

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

叫互操作?

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

Dav*_*son 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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


Ste*_*ner 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
Run Code Online (Sandbox Code Playgroud)