Raimundo B. C. Neto Ответов: 3

Как вставить с помощью горячей клавиши?


Привет,

Я должен решить одну проблему здесь, в моей работе, им нужно несколько горячих клавиш, и каждая горячая клавиша должна выполнять одну конкретную задачу. Эти горячие клавиши должны быть активны даже тогда, когда приложение было без фокуса.
Мне удалось зарегистрировать горячую клавишу, это работает, даже без акцента на приложение.
Но теперь моя проблема заключается в том, что одна из горячих клавиш должна обработать некоторые вещи в базе данных, сделать некоторую математику и затем вставить результат туда, где находится фокус, например, принудительно ctrl+c и ctrl+v.
Это легко-база данных и математическая часть, но как мне поместить что-то в память и заставить прошлое сосредоточиться там, где оно есть ?
Есть идеи?

ТКС очень много
Рэй

Что я уже пробовал:

Я не пробую ничего есть, я понятия не имею, как начать эту часть проблемы.

3 Ответов

Рейтинг:
1

Ziee-M

ПРИВЕТ,

Вы можете проверить следующее :
https://stackoverflow.com/questions/15413172/capture-a-keyboard-keypress-in-the-background

Надеюсь, это поможет


Raimundo B. C. Neto

Привет, спасибо за ответ. В этом посте есть способ зарегистрировать глобальную горячую клавишу, это я уже сделал. Моя проблема сейчас вот в чем:
Пользователь находится в другом приложении, кто угодно, и нажимает как ctrl+shift+1, я делаю некоторую обработку и помещаю результат, скажем, в строку, и тут возникает вопрос, как мне заставить вставить в это другое приложение, что именно там находится фокус?
ТКС

Ziee-M

Если я правильно понял, вам нужно либо заставить ваши различные приложения взаимодействовать на основе событий горячих клавиш, либо реализовать горячие клавиши в вашем целевом приложении.
Какие технологии вы используете (Winforms, WPF или другие)?

Raimundo B. C. Neto

Я постараюсь объяснить получше.
Я должен заставить два приложения общаться, но одно из них является приложением третьей части, и я не могу изменить его или получить прямой доступ к базе данных, и нет никакого веб-сервиса или ничего подобного для прямой связи.
Поэтому, когда пользователи должны ввести некоторую информацию, они делают ctrl+c и ctrl+v из одного приложения в другое. Но это предполагает поменять окна, выбрать информация в правый Филд, нажмите CTRL+C, изменение окна снова, поставить акцент в нужном поле и, чем сочетание клавиш Ctrl+В. Слишком много шагов.
Моя идея состояла в том, что если бы я мог поместить несколько глобальных горячих клавиш в свое приложение, по одной в каждое поле, и когда пользователям нужно, они могли бы поместить фокус на поле назначения и нажать горячую клавишу, горячая клавиша скопировала бы информацию из правого поля и мимо того места, где был фокус.
Глобальные горячие клавиши я смог сделать это, теперь я должен сделать часть копирования/вставки.
Ты идешь туда?

Ziee-M

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

Raimundo B. C. Neto

Хорошо, я изучу этот вариант, ТКС.

Рейтинг:
0

Raimundo B. C. Neto

Привет,
Я решаю эту проблему с помощью этого:

using System.Windows.Forms;
// Clear the Windows ClipBoard
Clipboard.Clear();
// Input text on the Windows ClipBoard
Clipboard.SetText(text);
// Paste text wherever the focus were
SendKeys.Send("^v");


ТКС