3

Delphi アプリに次のコード行があります。

sh := CoShellWindows.Create;

Citrix セッションで実行すると、「この操作を完了するのに十分なストレージがありません」という例外が発生します。

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

あなたの例外「この操作を完了するのに十分なストレージがありません。」本当に「シェルが存在しないため、インスタンスを作成できません」と読む必要があります

基本的に、Citrix で作成するシェルがないという仮定は正しいです。

シェルは何に使うのですか?より多くの情報を提供していただければ、完全な回避策を提供できる可能性があります。

于 2011-08-11T08:49:20.840 に答える