мне нужно определить нажатие клавиш в консольном проекте (не набора в консоли)
как это можно реализовать?
Объясню задачу и свой проект подробней я делаю не большую консольную игру и мне для управления персонажем нужно пучить данные о нажатии клавиш так как картинка выводится в консоль а консоль постоянно чистится и снова отрисовывается водить данные в неё нельзя и по этому мне нужно каким то другим способом получать данные о нажатии клавиш.
Самый банальный способ определения нажатия клавиш для случая, когда Ваше приложение не является фоновым и активно:
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
https://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
вот ето может помочь, по крайней мере отсюда я брал код для отслеживания перемещения указателя мыши вне формы приложения.
Хочешь сделать кейлоггер? Аяяй. По попе за такое нужно бить.
Но в целом ответ следующий: нужно использовать WinApi для этого и отлавливать ивенты самой операционной системы. Эта статья поможет: http://www.dreamincode.net/forums/topic/180436-global-hotkeys/
Но проще будет наработки чужие использовать. Например, даный проект делает именно то, что тебе нужно, используя более чем простой синтаксис: https://github.com/fabriciorissetto/KeystrokeAPI. Долго разбиратся не придется.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
1) Пытаюсь сделать поиск в DataGridView с помощью операций LINQ:
Получаю ошибки: SQLite error (1): no such table: __MigrationHistory SQLite error (1): no such table: __MigrationHistory SQLite error (1): no such table: EdmMetadata
Доброго времени сутокГде достать библиотеки для использования Roslyn? Смотрел примеры на этом сайте: https://blogs