为什么我的应用程序只捕获关键事件?

时间:2016-10-14 05:18:59

标签: c# wpf winforms events keydown

我正在开发一个项目,我可以计算正在按下的键,这样做我正在使用keydown事件。

以下是问题(
) 1.如果应用程序集中,它只捕获按键。它不必在文本框内,文本框仅用于显示其工作情况。如何使它尽可能地最小化并仍然捕获密钥? (在gif中你可以看到我没有在文本框中输入直到结束)

  1. 如何捕获非大写字母?我只是转换它吗?
  2. 这是一个gif,向您展示它的工作原理 http://recordit.co/IKubOT0pin

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace testkeydown
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Window_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Key == Key.A)
                {
                    textBox.AppendText("A");
                }
            }
        }
    }
    

2 个答案:

答案 0 :(得分:1)

第一部分:因为事件是窗口发出的事件。如果你想捕捉关键事件&#34;全球&#34;你需要另一种方法,比如使用钩子,比如这个答案:

Using global keyboard hook (WH_KEYBOARD_LL) in WPF / C#

第二部分:如果你想以正确的大小写捕获键(在窗口/应用程序中),你可以在TextCompositionManager上连接一个事件,如下所示:

    // on load or startup or something, set the handler
    TextCompositionManager.AddTextInputHandler(this,
    new TextCompositionEventHandler(OnTextComposition));


    // then the actual handler
    private void OnTextComposition(object sender, TextCompositionEventArgs e)
    {
        Console.WriteLine(e.Text);
    }

e.Text将有实际的&#34;字母&#34;那打字

答案 1 :(得分:0)

你想要的东西是keyLogger应用程序。你必须google key looging或key logger。

有很多网站会教你如何做到这一点。其中之一是:

http://null-byte.wonderhowto.com/how-to/create-simple-hidden-console-keylogger-c-sharp-0132757/