如何使用windows pastse命令将interop粘贴到c#中的其他应用程序?
调用互操作?
我的意思是如何编程c#右键单击过去的文本
答案 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)
您可以在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;
}
您需要添加对System.Windows.Forms.dll的引用。以防万一... 右键单击解决方案探索“参考”。 单击“添加引用”。 在“.NET”选项卡下,您应该能够找到该DLL。 那么使用法则应该有效。