C# 用于复制的后台工具&;粘贴
有没有一种简单的方法来创建一个在后台工作并模拟CTRL+V键的工具 例如:每当我按下F1按钮时,windows都会将复制的文本粘贴到活动文本框中 PS:对不起,这是CTRL的德语版本C# 用于复制的后台工具&;粘贴,c#,windows,background,copy,paste,C#,Windows,Background,Copy,Paste,有没有一种简单的方法来创建一个在后台工作并模拟CTRL+V键的工具 例如:每当我按下F1按钮时,windows都会将复制的文本粘贴到活动文本框中 PS:对不起,这是CTRL的德语版本 好的,第二部分: 这种方法对我很有效: private void Form1_Load(object sender, EventArgs e) { this.KeyPreview = true; this.KeyDown += new System.Windows.Form
好的,第二部分: 这种方法对我很有效:
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
this.KeyDown += new System.Windows.Forms.KeyEventHandler(KeyEvent);
}
private void KeyEvent(object sender, KeyEventArgs e) //Keyup Event
{
if (e.KeyCode == Keys.F4)
{
SendKeys.Send("^(V)");
}
}
using Utilities;
namespace F4paste
{
public partial class Form1 : Form
{
globalKeyboardHook gkh = new globalKeyboardHook();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
gkh.HookedKeys.Add(Keys.F4);
gkh.KeyDown += new KeyEventHandler(gkh_KeyDown);
}
void gkh_KeyDown(object sender, KeyEventArgs e)
{
SendKeys.Send("^(V)");
e.Handled = true;
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}
但它只在我的应用程序中起作用。我也不希望我的程序在其他应用程序中起作用。
例如:当我按[WindowsKey]+[R]时,“继续窗口”打开,如果我点击f4,那么我的程序应该模拟[CTRL]+[V]并粘贴复制的文本。有帮助吗
解决方案: 我终于得到了它,它为我工作的方式:
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
this.KeyDown += new System.Windows.Forms.KeyEventHandler(KeyEvent);
}
private void KeyEvent(object sender, KeyEventArgs e) //Keyup Event
{
if (e.KeyCode == Keys.F4)
{
SendKeys.Send("^(V)");
}
}
using Utilities;
namespace F4paste
{
public partial class Form1 : Form
{
globalKeyboardHook gkh = new globalKeyboardHook();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
gkh.HookedKeys.Add(Keys.F4);
gkh.KeyDown += new KeyEventHandler(gkh_KeyDown);
}
void gkh_KeyDown(object sender, KeyEventArgs e)
{
SendKeys.Send("^(V)");
e.Handled = true;
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}
此链接是必需的:
我曾经创建过一个类似的东西。我附加了一个OnDataReceivedHandler从串行端口读取输入(读取EAN代码并将其写入聚焦文本框)。您的目标是在用户按F1时获取事件。然后您只需调用:
SendKeys.Send(data);
SendKeys是表单的一部分,所以别忘了使用System.Windows.Forms;一个选项是使用。它将SendInput包装在引擎盖下,但抽象掉了所有PInvoke调用和其他复杂性。它是一个内嵌式DLL(针对您的情况),应该只包含一行代码
InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C);
下一步(取决于您要查找的内容-windows全局还是仅表单活动)是为F1注册“热键”
我建议查看一些关于这个问题的答案,以获得一个全局热键:或这篇CodeProject文章:
如果要查找当前表单上处于活动状态的热键,可以使用:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.F1)
{
// Send Ctrl + V
}
}
是否要在应用程序中或在每个打开的应用程序中模拟CTRL+V?对于未来的读者:我在Windows 7计算机上所做的SendKeys测试在2/4计算机上崩溃,没有任何提示或调试信息。请使用SendInput、SendMessage、PostMessage、InputSimulator库,但不要使用SendKeys。