编程多个自定义剪贴板,使用windows剪贴板-很少的复杂性

本文关键字:剪贴板 复杂性 windows 使用 自定义 编程 | 更新日期: 2023-09-27 18:14:58

我正在尝试建立一个c#背景应用程序,将钩键盘按键(例如CAPS + (a/B/C/....))作为复制到许多不同的剪贴板。

首先,我寻找了一个Windows方法,它会像CTRL+V一样:直接粘贴一个完整的字符串。我还尝试了SendInputs来"粘贴",错误的想法是执行时间太长。由于我没有找到任何商品,我决定使用Windows剪贴板。

场景是(当我做CAPS+A时)

  • 缓存剪贴板的内容以便以后检索
  • 模拟CTRL+C
  • 获取剪贴板的内容并将其设置为与' a '键对应的变量
  • 将剪贴板设置为默认缓存值

当我在记事本上时,这个效果很好。但是,当在另一个应用程序上执行CTRL+C时,我在步骤3中得到异常CLIPBRD_E_CANT_OPEN(整整5秒,剪贴板不能被我的应用程序访问)

我的问题:-有没有一种方法发送窗口的信号,为它"粘贴"一些给定的文本,像一个CTRL+V不使用Windows剪贴板?-是否有一种方法来强制剪贴板回到我的应用程序在5秒内?-我错过了一个更聪明的场景吗?

谢谢!

编程多个自定义剪贴板,使用windows剪贴板-很少的复杂性

看一下这个拦截键:

[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(long vKey);

VK_CONTROL = 0x11
VK_SHIFT = 0x10
C键= 0x43

如果按下一个键,函数返回一个整数值>0。