Я следую спецификации Спецификация API-интерфейса Citrix ICA Client Object
В соответствии с этой документацией вы можете установить свойство OutputMode, которое имеет следующее значение:
- OutputMode: режим вывода для клиентского движка.
Допустимые значения
- 0 (без заголовка),
- 1 (нормальный),
- 2 (без рендеринга),
- 3 (без окон)
Поэтому я установил в своем коде значение 3, которое имеет следующее значение:
OutputModeWindowless = 3 Клиент работает как нормально, но не отображается в окне сеанса. Поддерживает внутреннюю поверхность растрового изображения для снимков экрана. Выберите этот режим, чтобы клиент не отображал изображение на экране, если использование ЦП клиента является узким местом. Рендеринг по-прежнему происходит в фоновом режиме на поверхность вне экрана, что позволяет при желании получать снимки экрана сеанса.
Но в поведении нет абсолютно никакой разницы, я все еще вижу окно как в обычном режиме.
Я установил его перед подключением согласно этой документации :
OutputMode должен быть определен только во время загрузки; то есть до запуска соединения.
Я видел эту проблему, с которой сталкиваются другие разработчики:
Итак, вопрос:
- Действительно ли этот метод реализован?
- Если да Что нужно сделать, чтобы заставить его работать?
Вот пример кода, который я использовал:
[system.Reflection.Assembly]::LoadFile("c:\Users\<user>\AppData\Local\Citrix\ICA Client\WfIcaLib.dll")
$icaClient = New-Object WFICALib.ICAClientClass
$icaClient.CacheICAFile = $false
$icaClient.ICAFile = $icapath
$icaClient.OutputMode = [WfIcaLib.OutputMode]::OutputModeWindowless
$icaClient.Launch = $true
$icaClient.TWIMode = $true
$icaClient.Connect()
sleep 10
$enumHandle = $icaClient.EnumerateCCMSessions()
$sessionid = $icaClient.GetEnumNameByIndex($enumHandle, 0)
$icaClient.StartMonitoringCCMSession($sessionid, $true)
#$icaClient.session.ReplayMode = $true
$icaClient.session.Keyboard.SendKeyDown(16) # shift key
$icaClient.session.Keyboard.SendKeyDown(53) # number 5 key
$screenShot = $icaClient.session.CreateFullScreenShot()
$screenShot.Save()
$icaClient.Logoff()
sleep 10
$icaClient.StopMonitoringCCMSession($sessionid)
$icaClient.CloseEnumHandle($enumHandle)
Я использую:
- Citrix Версии Receiver / Workspace, которые я пробовал: 4.12, 4.9, Workspace 19.11
- Citrix StoreFront версия: 3.12.5000