Global Key Hook в ASP.Net Core с использованием C#/.Net Core 2.2

Окружающая среда

  • Приложение ASP.NET Core с Kestrel, размещенное как служба Windows с использованием .Net Core 2.2
  • Приложение Angualar, которое доставляется через приложение ASP.NET.
  • Веб-API для связи между приложением ASP.NET и Angular.
  • Все работает на одном ПК с Windows. Приложение Angular всегда будет доступно только на локальном хосте.

Случай использования

Пользователь делает снимок экрана приложения WPF, также работающего на том же ПК, с помощью клавиши печати. Приложению ASP.NET теперь нужен триггер, чтобы был сделан снимок экрана, чтобы его можно было отправить в угловое приложение.

Подход к решению

Я думал, что просто буду прослушивать глобальный хук для ключа печати, а затем получать изображение из буфера обмена. Я пытался использовать низкоуровневый Windows API и различные пакеты Nuget. (например, вот этот). Либо ничего не произошло, либо приложение зависло.

Вопрос

Есть ли способ глобального прослушивания нажатия клавиши клавиша печати в приложении .Net Core 2.2 или есть другой подход, который я могу прослушивать для новых снимков экрана, сделанных пользователем?


person Niklas    schedule 27.03.2019    source источник
comment
Это будет связано с тем, что ваша служба изолирована от пользователя и в конечном итоге подключит его к собственному рабочему столу, см. stackoverflow.com/questions/5815424/   -  person Alex K.    schedule 27.03.2019
comment
Зачем вам вообще рассматривать такую ​​забавную настройку вместо того, чтобы просто запускать приложение WPF/Windows Form, которое работает в свернутом виде и делает то же самое без angular и только с WebAPI в фоновом режиме? Даже Electron + Angular или что-то еще имели бы гораздо больше смысла, чем злоупотреблять приложением ASP.NET для этого.   -  person Tseng    schedule 27.03.2019
comment
Я знаю, это звучит глупо, но эта установка — всего лишь часть гораздо большего приложения, над которым работают многие команды. У этого было много причин, которые я не могу здесь назвать, из-за NDA, почему мы выбрали эту архитектуру.   -  person Niklas    schedule 28.03.2019
comment
@Tseng, как мы можем добиться подобного с помощью Electron + Angular? Можем ли мы слушать глобальный хук в Electron + Angular?   -  person Sachin    schedule 19.02.2020
comment
@Niklas, ты нашел какое-нибудь решение? если вы можете, пожалуйста, поделитесь здесь .. спасибо заранее ..   -  person Sachin    schedule 19.02.2020