【问题标题】:How can a winforms application accept user input without having focus?winforms 应用程序如何在没有焦点的情况下接受用户输入?
【发布时间】:2011-01-11 23:22:18
【问题描述】:

我正在使用一个托管在http://inputsimulator.codeplex.com/ 的项目,它使用默认的 Microsoft 键盘输入代码来发送实际按下的键。

如果我必须使用我的 winform 作为键盘来执行 Microsoft 的工具屏幕键盘等键盘功能,我必须为需要编辑的应用程序提供焦点。

假设我必须在 Word 中键入一个文档,因此它具有焦点。但是,当我单击表单按钮时,焦点转移到了我的表单上,而 Word 上没有任何内容。

所以...

我想要的是制作一个不带焦点但功能强大的表单控件。

【问题讨论】:

  • 您可能想结束提问。
  • 问题是用来提问的。 ;)
  • 我认为 Matt Ball 的意思是你实际上并没有问过问题。你试过什么,什么不起作用。您能否为我们这些不太熟悉您所描述的两种技术的人多描述一下。 “就像微软键盘一样” - 你假设我们了解微软键盘的工作原理。更详细地解释问题,概述您为解决问题所采取的方法,并就阻碍您成功的具体问题提出具体问题。
  • 如果我要正确推断,问题是:“如何让 winforms 应用程序在没有焦点的情况下接受用户输入?”但是,这个问题本身就很宽泛,正如其他 cmets 所说,您需要提供更多详细信息和示例代码。如果有更多信息,这可能是一个很好的问题。
  • @Afnan:希望您不介意进行一些编辑以帮助使事情更清晰。我还将更改标题和标签,希望能引起更多可能提供帮助的人的兴趣。

标签: c# winforms focus user-input


【解决方案1】:

WS_EX_NOACTIVATE 窗口样式标志就是为此而设计的。这是一个实现它的示例表单:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        this.TopMost = true;
    }
    protected override CreateParams CreateParams {
        get {
            var cp = base.CreateParams;
            cp.ExStyle |= 0x08000000; // Turn on WS_EX_NOACTIVATE;
            return cp;
        }
    }
}

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2011-04-13
    • 2010-10-28
    相关资源
    最近更新 更多