Я продолжил свое исследование после публикации этого вопроса, и я наконец нашел ответ.Только 3 взгляда на этот вопрос с тех пор, как я его опубликовал, но, несмотря на незаинтересованность, я считаю, что должен ответить на мой вопрос «На всякий случай», у кого-то еще есть эта проблема.
Я ошибся в своем заявлении, чтоКод, который я разместил, не нашел плагин XenApp.На самом деле это так.Возвращает действительный объект при наличии как метафрейма, так и XenAppWeb.Я разместил этот вопрос на собственных форумах Citrix, и там тоже нет ответов.
Чтобы найти ответ, я создал проект VS2008, к которому я добавил ссылку COM в библиотеку Citrix ICA - обаих устанавливают отдельно по одному.Я обнаружил, что оба имеют библиотеку COM с именем WFICALib, и искал их обоих, чтобы увидеть, есть ли что-то, что может их отличить.Я обнаружил свойство ClientVersion, которое было 9.0.xxx для метафрейма и 11.0.xxxx для XenAppWeb.
BINGO!
Из этого я вырезал следующий код, чтобы вернуть версию как функцию в VBScript:
Function GetVer()
Dim icaObj, Ver
On Error Resume Next
Set icaObj = CreateObject("Citrix.ICAClient")
if err.number = 0 then
if IsObject(icaObj) then
GetVer = icaObj.ClientVersion
else
GetVer = 0
end if
set icaObj = nothing
else
GetVer = 0
end if
End Function
ADDENDUM:
После публикации этого ответа я обнаружил, что этот скрипт в более новых версиях Internet Explorer (например, IE9) не может надежно обнаружить плагин - иногда он работает, а иногда нет!Чтобы решить эту проблему, я переключил сценарий на JScript вместо JavaScript, и новая версия выглядит следующим образом:
<script type="text/jscript">
function GetCitrixVersion() {
try {
var icaObj = new ActiveXObject("Citrix.ICAClient");
return icaObj.ClientVersion;
}
catch (e) {
return 0;
}
}
</script>
Обратите внимание, что тип сценария - text / jscript ,не текст / javascript.