Обнаружить citrix "режим приложения"?

Простите меня за то, что я, вероятно, использовал неправильный термин для этого "режима приложения".

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

Мы изменяем код, чтобы исправить это, но, к сожалению, это исправление при запуске приложения через Citrix теперь показывает два значка, один со значком и без текста.

Есть ли способ определить, что приложение работает через Citrix? Я не знаю подходящего термина для этого, но на рабочий стол пользователя выводится только окно приложения, а не весь удаленный рабочий стол.

Если это важно, приложение написано на Delphi.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
3 558
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Не знаю точно, как это сделать в delphi, но если вы можете вызвать user32.dll и вызвать функцию:

if (GetSystemMetrics(SM_REMOTESESSION) != 0)
{
   // We are in a remote session
}

Это должно сказать вам, работаете ли вы в среде Citrix или служб терминалов. SM_REMOTESESSION определяется как:

#define SM_REMOTESESSION        0x1000

Дополнительная информация об API GetSystemMetrics здесь: Ссылка на msdn

Редактировать На следующей странице описано, как сделать именно это в delphi. То, что работает для служб терминалов, должно работать и для Citrix:

Ваше приложение Delphi работает под службами терминалов в качестве удаленного сеанса?

Это работает для меня:

return System.Windows.Forms.SystemInformation.TerminalServerSession;

Примечание для любопытных: решение, предложенное «open-collar», - это просто .NET-оболочка для той, что была предоставлена ​​Джоном Сибли. Они должны возвращать одинаковый результат во всех случаях. Я подтвердил это, разобрав класс System.Windows.Forms.SystemInformation.

Другие вопросы по теме