我有这行代码在我的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程序。 –