我想为Windows XP及更高版本编写自己的全局代码段工具。这将始终在后台工具中运行,该工具将弹出全局定义的热键,允许我选择带有替换参数的片段,然后将扩展的片段粘贴到我曾经处于的任何控件的文本输入中激活它,最后,将我返回到之前的应用程序/输入框。
我知道如何处理大多数算法方面,但我不知道如何完成这些基于Windows的功能:
1 - Global Hotkey:即使在另一个应用程序文本框中输入数据,如何在Windows(来自.net?)中定义一个键序列? (通常这将是一个浏览器窗口)
2 - 粘贴到另一个应用程序:我可以使用粘贴缓冲区和Ctrl-C,但我想避免额外的击键。
3 - 将控制权返回到原始窗口:无缝返回到我的输入流:我该怎么做?事实上,我的工具如何在弹出之前知道我的位置?
我想自己写这个的原因是首先要学习如何(因为我还想制作其他类似的工具),其次,我不知道任何具有参数替换的片段工具我想。
所以,两(2)个问题是A)我的一般方法应该是什么?和B)我如何才能最好地完成上面的第1至3项?
答案 0 :(得分:2)
您需要使用全局系统键盘挂钩来捕获热键。有一个CodeProject article显示如何在.NET中执行此操作。
一旦你“陷入”你的击键,你就可以使用Windows API来获取当前的窗口句柄。但是,我会尽量避免激活您的应用程序。您应该只能粘贴新文本,并允许应用程序处理它。
使用Windows API的缺点是它并不适用于所有情况,并且“破损”的情况变得越来越普遍。例如,WPF应用程序不为窗口中的每个元素提供HWND,因此获取当前“控件”的句柄只会为您提供窗口,而不是相应的元素。
编辑:另一个参考来源是article in MSDN Magazine。它显示了如何使用P / Invoke通过C#执行此操作。