Глобальный хук в консольном приложении - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую! Понимаю тема давно избита и куча решений, но не могу сам найти как реализовать.. И возможно ли такое? Необходимо считывать нажатие одной единственной клавиши в консольном приложении, когда само приложение не активно. Собственно как реализовано сейчас:
         if (key == ConsoleKey.Add)
         {
             coin++;
         }
         key = Console.ReadKey(true).Key;

Решение задачи: «Глобальный хук в консольном приложении»

textual
Листинг программы
using System;
using System.Threading;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace GlobalHook
{
    class Program
    {
        [DllImport("user32.dll")]
        static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);
        static void Main(string[] args)
        {
            while (true)
            {
                Thread.Sleep(10);
 
                for (int i = 0; i < 255; i++)
                {
                    int keyState = GetAsyncKeyState((Keys)i);
 
                    if (keyState == -32767)
                    {
                        Console.WriteLine((Keys)i);
                    }
                }
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы