Vb.net 在Winform中按一个按钮,然后在任何其他程序中键入一个字符

Vb.net 在Winform中按一个按钮,然后在任何其他程序中键入一个字符,vb.net,winforms,button,visual-studio-2015,Vb.net,Winforms,Button,Visual Studio 2015,我想创建一个Winform来帮助我输入旧的英语字符。其中一些我可以使用美国国际键盘访问,但也有一些我不能也没有在Windows上使用的Alt代码,比如带有宏字符(āīōū)、带有宏字符的ash(ǣ)和上面带有点的字符(ċ和ġ)。(如果您知道一种更简单的非编程方式,请告诉我。) 所以我想创建一个可以打开然后运行的程序,它允许我做两件事: 当我在任何程序(Chrome、Word、记事本等)中选择一个文本框时,我可以在不失去焦点的情况下按下程序上的按钮,并在相关程序中生成与该按钮相关联的字符。(基本上

我想创建一个Winform来帮助我输入旧的英语字符。其中一些我可以使用美国国际键盘访问,但也有一些我不能也没有在Windows上使用的Alt代码,比如带有宏字符(āīōū)、带有宏字符的ash(ǣ)和上面带有点的字符(ċ和ġ)。(如果您知道一种更简单的非编程方式,请告诉我。)

所以我想创建一个可以打开然后运行的程序,它允许我做两件事:

  • 当我在任何程序(Chrome、Word、记事本等)中选择一个文本框时,我可以在不失去焦点的情况下按下程序上的按钮,并在相关程序中生成与该按钮相关联的字符。(基本上,我想用特定的字符子集复制Windows屏幕键盘)

  • 当我在任何程序中选择文本框时,我可以按一个特定的组合键(例如Alt-C或RightAlt-g),该组合键将在文本框中生成特殊字符

  • 这两个步骤我都很费劲,所以我将从第一个开始。我怎样才能在按下按钮时在另一个程序中打印字符(我在谷歌上找不到这个),怎样才能将焦点保持在我所在的程序上,以确保当我按下按钮时,我的程序不会聚焦

    这是我的表单布局:


    我正在使用VB.NET和Windows Visual Studio 2015。

    要使表单不可聚焦,可以覆盖
    CreateParams
    。可以很容易地转换成VB.NET使用在线转换器。至于打印字符,使用。最后,。好吧,我的SendKeys有问题。我环顾了好几个答案,但都没有找到我想要的答案。我所能找到的就是,它允许我在记事本窗口中设置文本,但我想在任何应用程序中附加(而不是重置)文本。
    SendKeys
    将按键发送到当前聚焦的窗口。如果您跟随我的第一条评论,使您的表单无法接收焦点,从而导致以前的应用程序保留其焦点,那么
    发送键
    应该可以正常工作。您只需使用一行:
    发送键。发送(“此处的文本或字符”)
    -无需处理获取正确窗口的问题,如果您的表单仍然无法接收焦点。要使表单不可聚焦,您可以覆盖
    CreateParams
    。可以很容易地转换成VB.NET使用在线转换器。至于打印字符,使用。最后,。好吧,我的SendKeys有问题。我环顾了好几个答案,但都没有找到我想要的答案。我所能找到的就是,它允许我在记事本窗口中设置文本,但我想在任何应用程序中附加(而不是重置)文本。
    SendKeys
    将按键发送到当前聚焦的窗口。如果您跟随我的第一条评论,使您的表单无法接收焦点,从而导致以前的应用程序保留其焦点,那么
    发送键
    应该可以正常工作。您只需使用一行:
    发送键。发送(“此处的文本或字符”)
    -无需处理获取正确窗口的问题,如果你的眼睛不能集中注意力。