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





Не знаю точно, как это сделать в 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.