如何使用windows pastse命令将interop粘贴到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");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,假设您要粘贴到特定字段中.这是您需要使用FindWindow和FindWindowEx来获取要粘贴的字段的句柄的位置.将数据复制到剪贴板后,执行以下步骤.
这是如何使用 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)
| 归档时间: |
|
| 查看次数: |
12734 次 |
| 最近记录: |