我有這行代碼在我的Delphi應用程序:Windows外殼程序和Citrix
sh := CoShellWindows.Create;
當通過Citrix會話運行,這引發了一個異常「沒有足夠的存儲是可用於完成此操作。」
有人可以證實我懷疑我無法通過思傑訪問此問題嗎?如果這有什麼區別,我正在以無縫模式運行。也許有什麼我需要改變發佈的圖標,使其工作?
我猜測Citrix沒有創建「Shell」。
由於
EDIT
的CoShellWindows只是它創建它實現了IShellWindows interface的對象的類。然後使用此接口遍歷它的項目以查找Internet Explorer實例(或更具體地說,實現IWebBrowser2接口的項目)。
還有一些使用CoShellWindows的其他用例場景,但最終都用於與IWebBrowser2接口(Internet Explorer 8)進行交互。我的要求是獲得這個IWebBrowser2對象。
呼叫,在幕後被調用使用以下參數在Windows API CoCreateInstance的:
- rclsid = {9BA05972-F6A8-11CF-A442-00A0C90A8F39}(的 IShellWindows CLSID)
- pUnkOuter = NULL(零)
- dwClsContext = CLSCTX_ALL(我已經嘗試這些 標誌的各種組合)
- RIID = {85CB6900-4D95-11CF-960C-0080C7F4EE85}(IShellWindows的IID)
- PPV =聲明爲類型IShellWindows變量
如:CoCreateInstance的(CLASS_ShellWindows,零,CLSCTX_ALL,IID_IShellWindows,SH)
我可能會幫助你,但我對Delphi一無所知 - CoShellWindows.Create應該做什麼?請記住,對於已發佈的應用程序,不存在shell(即桌面)。 –
我不知道這個CoShell是什麼,但我可以確認你可以從你的主應用程序運行外部.bat和.exe程序。我們有一個從Citrix圖標運行的Delphi應用程序,它運行的很多報告都是外部.exe程序。 –