0

我想为 Windows XP 及更高版本编写自己的全局片段工具。这将是一个始终在后台运行的工具,它会在全局定义的热键上弹出,允许我选择一个带有替换参数的片段,然后将扩展的片段粘贴到我当时所在的任何控件的文本输入中激活它,最后,将我返回到之前的应用程序/输入框。

我知道如何完成大部分算法方面的工作,但我不知道如何完成这些基于 Windows 的功能:

1 - 全局热键:如何在 Windows(来自 .net?)中定义一个可以工作的键序列,即使在另一个应用程序文本框中输入数据也是如此?(通常这将是一个浏览器窗口)

2 - 粘贴到另一个应用程序:我可以使用粘贴缓冲区和 Ctrl-C,但我想避免额外的击键。

3 - 将控件返回到原始窗口:无缝返回到我的输入流:我该怎么做?事实上,我的工具在弹出之前怎么知道我在哪里?

我想自己写这篇文章的原因首先是学习如何(因为我想做其他类似的工具),其次,我不知道有任何片段工具具有我想要的参数替换。

所以,两(2)个问题是A)我的一般方法应该是什么?B) 我怎样才能最好地完成上面的第 1 到第 3 项?

4

1 回答 1

2

您需要使用全局系统键盘挂钩来捕获热键。有一篇CodeProject 文章展示了如何在 .NET 中执行此操作。

一旦你“捕获”了你的击键,你就可以使用 Windows API 来获取当前的窗口句柄。但是,我会尽量避免激活您的应用程序。您应该能够粘贴新文本,并允许应用程序处理它。

使用 Windows API 的缺点是它并非在所有情况下都有效,而且“坏掉”的情况越来越普遍。例如,WPF 应用程序不为窗口中的每个元素提供 HWND,因此获取当前“控件”的句柄只会为您提供窗口,而不是适当的元素。


编辑:另一个参考来源是MSDN Magazine 中的这篇文章。它展示了如何使用 P/Invoke 通过 C# 执行此操作。

于 2009-08-26T17:26:35.670 回答