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

时间:2014-07-27 11:52:39

标签: c# windows keyboard clipboard user32

我正在尝试构建一个C#后台应用程序,它可以挂钩键盘按键(例如CAPS +(A / B / C / ....)),作为复制到许多不同的剪贴板。

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

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

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

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

我的问题: - 有没有办法向Windows发送信号,以便粘贴"粘贴"一些给定的文本,像CTRL + V一样不使用Windows剪贴板? - 有没有办法强制剪贴板在5秒内回到我的应用程序? - 我错过了一个更聪明的场景吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

在此之前看看这个拦截Keys:

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

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

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