Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用windows剪贴板编程多个自定义剪贴板-不太复杂_C#_Windows_Keyboard_Clipboard_User32 - Fatal编程技术网

C# 使用windows剪贴板编程多个自定义剪贴板-不太复杂

C# 使用windows剪贴板编程多个自定义剪贴板-不太复杂,c#,windows,keyboard,clipboard,user32,C#,Windows,Keyboard,Clipboard,User32,我正在尝试构建一个C#后台应用程序,它可以钩住键盘击键(例如CAPS+(a/B/C/…)),作为许多不同剪贴板的副本 首先,我寻找了一个Windows方法,它的作用类似于CTRL+V:直接粘贴一个完整的字符串。我还尝试将SendInputs“粘贴”,这是一个错误的想法,因为执行时间太长。由于没有找到任何商品,我决定使用Windows剪贴板 场景是(当我使用CAPS+A时) 缓存剪贴板的内容,以便以后检索 模拟CTRL+C组合键 获取剪贴板的内容,并将其设置为与“a”键对应的变量 将剪贴板设置为

我正在尝试构建一个C#后台应用程序,它可以钩住键盘击键(例如CAPS+(a/B/C/…)),作为许多不同剪贴板的副本

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

场景是(当我使用CAPS+A时)

  • 缓存剪贴板的内容,以便以后检索
  • 模拟CTRL+C组合键
  • 获取剪贴板的内容,并将其设置为与“a”键对应的变量
  • 将剪贴板设置为默认缓存值
当我在记事本上时,这很有效。但是当在另一个应用程序上执行CTRL+C时,我在第3步打开了异常CLIPBRD_E_CANT_(在整整5秒钟内,我的应用程序无法访问剪贴板)

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


谢谢

请查看以下内容,以便在以下所有内容之前拦截关键点:

[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(long vKey);
VK_控制=0x11
VK_SHIFT=0x10
C键=0x43

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

模拟击键完全是错误的做法。不过,这是一项非常大的任务,我觉得你还不能胜任这项任务。您可能想看看现有的开源(甚至是商业)软件包,而不是用C#编写自己的软件包。我自己从来没有试过,但看起来像是一个剪贴板管理器,你可以查看。