编程多个自定义剪贴板,使用Windows剪贴板 – 并发症less

我试图build立一个C#的背景应用程序,将挂钩键盘击键(例如CAPS +(A / B / C / ….))充当复制到许多不同的剪贴板

首先,我查找了一个类似于CTRL + V的Windows方法:直接粘贴一个完整的string。 我也尝试了SendInputs来“粘贴”,错误的想法花了太长的时间来执行。 由于我没有find任何商品,我决定使用Windows剪贴板。

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

  • caching剪贴板的内容以便稍后检索
  • 模拟一个CTRL + C
  • 获取剪贴板的内容并将其设置为对应于“A”键的variables
  • 将剪贴板设置为默认的caching值。

当我在记事本上时,这效果很好。 但是,当在另一个应用程序上执行CTRL + C时,我在第3步得到exceptionCLIPBRD_E_CANT_OPEN(正好5秒,我的应用程序无法访问剪贴板)

我的问题: – 有没有办法发送一个Windows的信号来“粘贴”一些给定的文本,就像一个CTRL + V而不使用Windows剪贴板? – 有没有办法强制剪贴板回到我的应用程序在5秒内? – 我错过了一个更聪明的情况?

谢谢!

先来看看这个拦截Keys:

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

VK_CONTROL = 0x11
VK_SHIFT = 0x10
C密钥= 0x43

如果按下某个键,该函数返回一个大于0的整数值。