3

我的 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)

4

1 回答 1

4

您的异常“没有足够的存储空间来完成此操作。” 应该真正阅读“Shell 不存在,因此无法创建实例”

基本上,您的假设是正确的,即在 Citrix 中没有要创建的外壳。

你用外壳做什么?如果您提供更多信息,我们很可能会提供完整的解决方法。

于 2011-08-11T08:49:20.840 回答