如何调用互操作来使用 Windows Pastse 命令将文本粘贴到 C# 中的其他应用程序?
调用互操作?
我的意思是如何对 C# 进行编程相同的右键单击粘贴文本
在某些情况下这可能有点棘手,但实际上非常简单且容易做到。下面的示例介绍了如何使用文本框(在本例中称为 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");
}
}
现在,假设您想粘贴到specific场地。这是您需要使用 FindWindow 和 FindWindowEx 来获取要粘贴到的字段的句柄的地方。以下是将数据复制到剪贴板后的步骤。
- 获取进程句柄
- 使流程成为焦点(激活它)
- 找到您要粘贴到的字段的句柄
- 将焦点设置到该字段
- 使用 SendKeys 从剪贴板粘贴
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)