我的 Delphi 应用程序中有这行代码:
sh := CoShellWindows.Create;
通过 Citrix 会话运行时,这会引发异常“没有足够的存储空间来完成此操作”。
有人可以证实我怀疑我无法通过 Citrix 访问它吗?如果这有什么不同,我将在无缝模式下运行。也许我需要在已发布的图标上进行一些更改才能使其正常工作?
我猜思杰中没有要创建的“外壳”。
谢谢
编辑
CoShellWindows只是一个创建实现 IShellWindows 接口的对象的类。然后,此接口用于遍历它的项目,以查找 Internet Explorer 的实例(或更具体地说,实现 IWebBrowser2 接口的项目)。
还有一些使用 CoShellWindows 的其他用例场景,但最终都用于与 IWebBrowser2 界面(Internet Explorer 8)进行交互。我的要求是获取这个 IWebBrowser2 对象。
该调用在幕后使用以下参数调用 Windows API CoCreateInstance:
- rclsid = {9BA05972-F6A8-11CF-A442-00A0C90A8F39}(IShellWindows 的 CLSID)
- pUnkOuter = null (nil)
- dwClsContext = CLSCTX_ALL(我尝试了这些标志的各种组合)
- riid = {85CB6900-4D95-11CF-960C-0080C7F4EE85}(IShellWindows 的 IID)
- ppv = 声明为 IShellWindows 类型的变量
例如:CoCreateInstance(CLASS_ShellWindows, nil, CLSCTX_ALL, IID_IShellWindows, sh)