代码之家  ›  专栏  ›  技术社区  ›  RBarryYoung

如何用.NET编写自己的全局代码片段程序?

  •  0
  • RBarryYoung  · 技术社区  · 15 年前

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

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

    1-全局热键:如何在Windows(从.NET)中定义键序列?即使在另一个应用程序文本框中输入数据,这也会有效吗?(通常这是一个浏览器窗口)

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

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

    我自己写这篇文章的原因是,首先要学习如何(因为我还想制作其他类似的工具),其次,我不知道有什么代码片段工具可以替代我想要的论点。

    那么,这两(2)个问题是a)我的一般方法是什么?以及b)我如何才能最好地完成上述项目1至3?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Reed Copsey    15 年前

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

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

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


    编辑:另一个引用源是 article in MSDN Magazine . 它演示了如何使用p/invoke通过c_来实现这一点。