我正在尝试构建一个 C# 后台应用程序,该应用程序将 Hook 键盘击键(例如 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 秒内返回到我的应用程序? - 我错过了更智能的场景吗?
谢谢!
最佳答案
先看看这个拦截Keys:
[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(long vKey);
VK_CONTROL = 0x11
VK_SHIFT = 0x10
C 键 = 0x43
如果按下某个键,该函数返回一个整数值>0。
关于c# - 编程多个自定义剪贴板,使用 Windows 剪贴板 - 很少有并发症,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24980649/