c# определить нажатие клавиши в консольном проекте [закрыт]

102
06 ноября 2019, 07:30

мне нужно определить нажатие клавиш в консольном проекте (не набора в консоли)

как это можно реализовать?

Объясню задачу и свой проект подробней я делаю не большую консольную игру и мне для управления персонажем нужно пучить данные о нажатии клавиш так как картинка выводится в консоль а консоль постоянно чистится и снова отрисовывается водить данные в неё нельзя и по этому мне нужно каким то другим способом получать данные о нажатии клавиш.

Answer 1

Хочешь сделать кейлоггер? Аяяй. По попе за такое нужно бить.

Но в целом ответ следующий: нужно использовать WinApi для этого и отлавливать ивенты самой операционной системы. Эта статья поможет: http://www.dreamincode.net/forums/topic/180436-global-hotkeys/

Но проще будет наработки чужие использовать. Например, даный проект делает именно то, что тебе нужно, используя более чем простой синтаксис: https://github.com/fabriciorissetto/KeystrokeAPI. Долго разбиратся не придется.

Answer 2

Самый банальный способ определения нажатия клавиш для случая, когда Ваше приложение не является фоновым и активно:

public class Program
{
    public static void Main()
    {
        ConsoleKeyInfo key;
        do
        {
            key = Console.ReadKey();
            Console.WriteLine(key.Key + " клавиша была нажата");
        }
        while (key.Key != ConsoleKey.Escape); // по нажатию на Escape завершаем цикл
    }
}

Если же нужен способ отслеживания нажатия клавиш, когда приложение не активно и является фоновым процессом, то нам нужно импортировать методы вспомогательной библиотеки user32.dll:

[DllImport("user32.dll")] 
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
[DllImport("user32.dll")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);

Есть хороший ответ, касаемо этого варианта: Capture a keyboard keypress in the background. В принципе, если воспользоваться поиском, то ответы можно найти. Или вот готовый хороший и полноценный ответ: Background Key Press Listener

Answer 3

https://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C

вот ето может помочь, по крайней мере отсюда я брал код для отслеживания перемещения указателя мыши вне формы приложения.

READ ALSO
Возникает ошибка?

Возникает ошибка?

Выдает такую ошибку:

155
Для чего тут используется функция count()?

Для чего тут используется функция count()?

Для чего тут используется функция count(), ведь если isset() выполнится, то понятно, что массив содержит больше одного элемента или нет?

150
Parse error: syntax error, unexpected 'return' (T_RETURN)

Parse error: syntax error, unexpected 'return' (T_RETURN)

Выдает ошибку в линии где return $this->urban();

129
Авторизация ldap php

Авторизация ldap php

Освоил авторизацию через AD при помощи PHPДалее требуется проверка на ту же авторизацию

115