用于复制粘贴的背景工具

本文关键字:背景 工具 复制 用于 | 更新日期: 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;