为什么我的应用程序只捕获键事件,如果它的焦点
本文关键字:如果 焦点 事件 应用程序 我的 为什么 | 更新日期: 2023-09-27 18:12:57
我正在做一个项目,我可以计算正在按下的键,这样我使用keydown事件。
问题在这里
1. 它只在应用程序集中的情况下捕捉按键。它不必在文本框内,文本框只是在那里显示它的工作。如何使它最小化,同时还能捕获键?(在gif中,你可以看到我没有在文本框中输入,直到结束)
- 我如何使它捕获非大写字母?我只是简单地转换它吗?
这里有一个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");
}
}
}
}
第一部分:因为事件是窗口发出的事件。如果希望"全局"捕获键事件,则需要另一种方法,例如使用钩子,如下所示:
在WPF/c#中使用全局键盘钩子(WH_KEYBOARD_LL)
第二部分:如果您想以正确的大小写捕获键(在窗口/应用程序中),您可以在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将有实际的"字母"键入
您想要的东西被称为keyLogger应用程序。你必须谷歌键查找或键记录器。
有很多网站会教你怎么做。其中之一是:
http://null-byte.wonderhowto.com/how-to/create-simple-hidden-console-keylogger-c-sharp-0132757/