用于复制粘贴的背景工具
本文关键字:背景 工具 复制 用于 | 更新日期: 2023-09-27 18:14:02
是否有一种简单的方法来创建一个在后台工作并模拟CTRL+V键的工具?
例如:每当我按下F1按钮时,windows将复制的文本粘贴到活动文本框中。
PS: sorry for STRG:(这是德语版的CTRL
Ok Part II:
这个方法适合我:
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)");
}
}
但是它只在我的应用程序中起作用。我也不希望我的程序在其他应用中也这样做。例如:当我按[WindowsKey] + [R],"继续窗口"打开,如果我点击f4,那么我的程序应该模拟[CTRL] + [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)
{
}
}
}
这个链接是必要的:一个简单的c#全局低级键盘钩子
一个选择是使用InputSimulator。它将SendInput封装在底层,但抽象掉了所有的PInvoke调用和其他复杂性。这是DLL中的一个drop,(对于您的情况)应该只有一行代码。
InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C);
下一步(取决于您正在寻找的是全局窗口还是活动窗体)将是为F1注册一个"热键"。
我建议你看看这个问题的一些答案:在c#中解决全局热键处理的最佳方法?一个简单的c#全局低级键盘钩子
如果您正在查找当前表单上的活动热键,您可以使用:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.F1)
{
// Send Ctrl + V
}
}
我已经创建了一个类似的东西。我正在附加一个OnDataReceivedHandler从串行端口读取输入(读取EAN代码并将其写入焦点文本框)。您的目标是在用户按下F1时获得事件。然后调用:
SendKeys.Send(data);
SendKeys是表单的一部分,所以不要忘记using System.Windows.Forms;