Как вывести настольное приложение на передний план из веб-приложения через приложение в трее [дубликат]C#

Место общения программистов C#
Anonymous
Как вывести настольное приложение на передний план из веб-приложения через приложение в трее [дубликат]

Сообщение Anonymous »

У меня есть веб-приложение, которое должно запускать действия в приложении для ПК (не под моим контролем). Это настольное приложение предоставляет API интеграции, но только для других настольных приложений, а не для веб-приложений. Чтобы устранить этот пробел, я создал третье настольное приложение (приложение .NET C# в лотке), которое прослушивает определенный порт для HTTP-запросов от веб-приложения, а затем пересылает команды и меняет фокус на настольное приложение. .
Проблема, с которой я столкнулся, заключается в том, что, поскольку приложение в трее работает в фоновом режиме, оно не может изменить фокус из браузера (веб-приложение ) в настольное приложение.
Я попробовал несколько методов, найденных в Интернете, в том числе:
  • AllowSetForegroundWindow (-1)
  • SetForegroundWindow
  • SwitchToThisWindow
  • Запуск исполняемого файла от имени администратора
Несмотря на все эти усилия, ни один из этих методов не выводит настольное приложение на передний план. Вместо этого значок настольного приложения просто мигает оранжевым цветом на панели задач.
Изменение ключа реестра ForegroundLockTimeout на 0 работает, как и ожидалось, но я бы хотел избежать такого подхода. .
При запуске программы в Visual Studio она ведет себя должным образом. Однако запуск исполняемого файла вне Visual Studio приводит только к тому, что значок мигает оранжевым цветом, а функции возвращают значение false с сообщением ERROR_ACCESS_DENIED.
Может ли кто-нибудь помочь мне решить эту проблему? Есть ли обходной путь, чтобы заставить эту работу работать так, как есть? Или вы можете посоветовать мне другой подход для достижения желаемого поведения?

Подробнее здесь: https://stackoverflow.com/questions/787 ... cation-via

Вернуться в «C#»