开发者

How can a winforms application accept user input without having focus?

I am using a project hosted at http://inputsimu开发者_运维问答lator.codeplex.com/ It uses default Microsoft keyboard input codes to SendKeys what key is actually pressed.

If I have to use my winform as keyboard to perform keyboard functionality like Microsoft's tool, On-Screen Keyboard, I have to provide focus to the application that needs to be edited.

Let's say for example I have to type a document in Word, so it has focus. But when I click my form buttons, focus transfers to my Form and nothing gets written on Word.

So...

What I want is to make a form control that does not take focus but performs functionally.


The WS_EX_NOACTIVATE window style flag was designed to do this. Here's a sample form that implements it:

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;
        }
    }
}


Keyboard Spy: implementation and counter measures

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜