2011-01-11 1 views
3

Ich verwende ein Projekt gehostet um http://inputsimulator.codeplex.com/ Es verwendet Standard Microsoft Tastatureingabecodes zu SendKeys, welche Taste tatsächlich gedrückt wird.Wie kann eine Winforms-Anwendung Benutzereingaben akzeptieren, ohne den Fokus zu haben?

Wenn ich meine WinForm als Tastatur verwenden muss, um Tastaturfunktionen wie das Microsoft-Tool Bildschirmtastatur auszuführen, muss ich den Fokus auf die Anwendung legen, die bearbeitet werden muss.

Sagen wir zum Beispiel, ich muss ein Dokument in Word eingeben, damit es den Fokus hat. Aber wenn ich auf meine Formularschaltflächen klicke, wird der Fokus auf mein Formular übertragen und nichts wird in Word geschrieben.

So ...

Was ich will, ist ein Formular-Steuerelement zu machen, die den Fokus nicht nehmen, sondern führt funktionell.

+0

Vielleicht möchten Sie Ihre Frage zu beenden. –

+0

Fragen sollen gestellt werden. ;) –

+0

Ich denke, was Matt Ball bedeutet ist, dass Sie nicht wirklich eine Frage gestellt haben. Was hast du probiert, was nicht funktioniert? Können Sie es ein wenig mehr beschreiben für diejenigen von uns, die mit den zwei Technologien, die Sie beschreiben, weniger vertraut sind? "Wie Microsoft-Tastatur tut" - Sie nehmen an, wir verstehen, wie Microsoft-Tastatur funktioniert. Erläutern Sie das Problem genauer, skizzieren Sie den Lösungsweg und stellen Sie spezifische Fragen zu bestimmten Problemen, die Sie daran hindern, erfolgreich zu sein. –

Antwort

2

Die WS_EX_NOACTIVATE Fenster Stil Flagge wurde entwickelt, um dies zu tun. Hier ist ein Beispielformular, das es implementiert:

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

Great funktioniert wie genial –

Verwandte Themen