我在我的Delphi应用程序中有这行代码:
sh := CoShellWindows.Create;
当在 Citrix 会话中运行时,会引发异常“没有足够的存储空间来完成此操作。”
有人可以确认我不能通过 Citrix 访问它吗?如果我以无缝模式运行是否有所不同。也许我需要更改发布的图标上的某些内容才能使其工作?
我猜测在 Citrix 中没有“Shell”可供创建。
谢谢
编辑 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)