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