У меня есть эта строка кода в моем приложении Delphi:
sh := CoShellWindows.Create;
При запуске через сеанс Citrix возникает исключение «Недостаточно памяти для выполнения этой операции».
Может ли кто-нибудь подтвердить мое подозрение, что я не могу получить к нему доступ через Citrix? Я бегу в бесшовном режиме, если это имеет значение. Может быть, мне нужно что-то изменить на опубликованном значке, чтобы он работал?
Я предполагаю, что в Citrix нет "Оболочки" для создания.
Спасибо
EDIT
CoShellWindows - это просто класс, который создает объект, реализующий интерфейс IShellWindows . Затем этот интерфейс используется для итерации его элементов в поисках экземпляра Internet Explorer (или, точнее, элемента, который реализует интерфейс IWebBrowser2).
Существует несколько других сценариев использования с использованием CoShellWindows, но в конечном итоге все они используются для взаимодействия с интерфейсом IWebBrowser2 (Internet Explorer 8). Мое требование - получить этот объект IWebBrowser2.
Вызов за кулисами вызывает Windows API CoCreateInstance со следующими параметрами:
- rclsid = {9BA05972-F6A8-11CF-A442-00A0C90A8F39} (CLSID из
IShellWindows)
- pUnkOuter = null (nil)
- dwClsContext = CLSCTX_ALL (я пробовал различные комбинации этих
флаги)
- riid = {85CB6900-4D95-11CF-960C-0080C7F4EE85} (IID IShellWindows)
- ppv = переменная, объявленная как тип IShellWindows
Например: CoCreateInstance (CLASS_ShellWindows, nil, CLSCTX_ALL, IID_IShellWindows, sh)