c#-winforms应用程序如何在没有焦点的情况下接受用户输入?

我正在使用一个托管在http://inputsimulator.codeplex.com/的项目,它使用默认的Microsoft键盘输入代码将SendKeys实际按下了什么键.

如果必须使用winform作为键盘来执行键盘功能,例如Microsoft的工具“屏幕键盘”,则必须将焦点集中在需要编辑的应用程序上.

比方说,例如,我必须在Word中键入文档,因此它具有焦点.但是,当我单击表单按钮时,焦点转移到了表单上,而Word上没有任何内容.

所以…

我想要做的是一个不集中精力但在功能上执行的窗体控件.

解决方法:

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;
        }
    }
}
上一篇:C#如何根据一个属性网格中另一个属性的值公开一个属性?


下一篇:C#-WinForms鼠标捕获