Как имитировать ЗАЖАТИЕ кнопки на клавиатуре вне формы

154
02 декабря 2021, 19:00

В одном из методов требуется зажатие определённой клавиши, пока верно условие. Я использую голосовое управление в программе. Когда я пытался сделать нажатие клавиши в бесконечном цикле (бесконечном, т.к. клавиша зажата всё время пока условие верно) так

static void keyBDPress()
        {
            for ( int F = f; F == 1;)
            {
                SendKeys.Send("W");
            }
        }

то у меня возникла проблема, я не могу изменить условие (программа выполняет цикл, а не функцию отвечающую за распознавание речи). Эту проблему я не хочу решать через многопоточность. Я решил просто использовать зажатие клавиши. Вот код

static void keyBDPress()
        {
            if (f == 1)
            {
                //SendKeys.Send("W");
            }
        }

Вместо SendKeys.Send("W") нужно использовать ЗАЖАТИЕ клавиши. Пожалуйста помогите!

Answer 1
public void KeyboardAction(Key key, Keyboard.KeyDownEvent routedEvent)
    var target = Keyboard.FocusedElement;    // Target element
    target.RaiseEvent(
        new KeyEventArgs(
            Keyboard.PrimaryDevice,
            PresentationSource.FromVisual(target),
            0,
            key)
        { RoutedEvent = routedEvent }
    );
}

и использование:

KeyboardAction(Key.W, Keyboard.KeyDownEvent); // нажатие
KeyboardAction(Key.W, Keyboard.KeyUpEvent); // отжатие

база для ответа взята из: https://stackoverflow.com/a/1646568/4423545

нагуглил по запросу "c# keydown sendkeys"

READ ALSO
Постоянная загрузка индекса IntelliSense

Постоянная загрузка индекса IntelliSense

Обратил внимание, что при старте проекта Win FormsNet framework все фоновые задачи успешно выполняются и заканчиваются, в то время как одна постоянно...

67
Как наиболее правильней и корректней вернуть более одного значения в методе? С#

Как наиболее правильней и корректней вернуть более одного значения в методе? С#

Мне надо чтоб метод вернул четыре значения один bool, один string и два floatЯ делаю это с помощью Dictionary<bool, string> Но Dictionary мне кажется создан для...

187
Микрофризы при ожидание коннекта по tcp в IEnumerator-е

Микрофризы при ожидание коннекта по tcp в IEnumerator-е

Ожидаю подключение к tcp данным кодом:

174
WP - вывод 7 постов от актуальной даты

WP - вывод 7 постов от актуальной даты

У меня есть рубрика, в которой много постовПосты начинаются, к примеру, с "21 декабря 2019 года"

68