我正在尝试构建一个C#后台应用程序,它可以钩取键盘按键(例如CAPS +(A / B / C / ....)),并将其作为拷贝到不同剪贴板的操作。
首先,我查找了一个Windows方法,它会像CTRL + V一样:直接粘贴完整字符串。我还尝试使用SendInputs来“粘贴”,但这个想法是错误的,因为执行时间太长。由于我没有找到任何好的方法,所以我决定使用Windows剪贴板。
场景是(当我按下CAPS + A时):
- 缓存剪贴板内容以便稍后检索 - 模拟CTRL + C - 获取剪贴板内容,并将其设置为与“ A”键对应的变量 - 将剪贴板设置为默认缓存值。
当我在记事本上时,这很有效。但是,当在另一个应用程序上执行CTRL + C时(5秒钟),我会收到异常CLIPBRD_E_CANT_OPEN,我的应用程序无法访问剪贴板。
我的问题: - 有没有一种方法向Windows发送信号,使其“粘贴”某些给定文本,就像使用Windows剪贴板一样,而不使用Windows剪贴板? - 是否有一种方法强制剪贴板在5秒内返回到我的应用程序? - 我是否遗漏了更智能的方案?
谢谢!
首先,我查找了一个Windows方法,它会像CTRL + V一样:直接粘贴完整字符串。我还尝试使用SendInputs来“粘贴”,但这个想法是错误的,因为执行时间太长。由于我没有找到任何好的方法,所以我决定使用Windows剪贴板。
场景是(当我按下CAPS + A时):
- 缓存剪贴板内容以便稍后检索 - 模拟CTRL + C - 获取剪贴板内容,并将其设置为与“ A”键对应的变量 - 将剪贴板设置为默认缓存值。
当我在记事本上时,这很有效。但是,当在另一个应用程序上执行CTRL + C时(5秒钟),我会收到异常CLIPBRD_E_CANT_OPEN,我的应用程序无法访问剪贴板。
我的问题: - 有没有一种方法向Windows发送信号,使其“粘贴”某些给定文本,就像使用Windows剪贴板一样,而不使用Windows剪贴板? - 是否有一种方法强制剪贴板在5秒内返回到我的应用程序? - 我是否遗漏了更智能的方案?
谢谢!