我们使用Oracle Forms 10g client_host将文件复制到临时位置,启动应用程序以查看临时文件,然后删除临时文件。在这种情况下,查看应用程序是Windows Internet Explorer。问题是删除临时文件的delete_file调用在IE启动之前被调用以显示文件,导致IE中的错误,因为它无法找到该文件。以下是显示我们正在做的事情的代码段:
-- Copy the file to the site defined temporary location
client_host ('cmd /c copy '||Vcurrentfile||' '||Vtempfile);
-- Launch viewing application and display the temporary file
client_host (Pviewer||' '||Vtempfile);
-- Delete the temporary file
Vsuccessind := webutil_file.delete_file (Vtempfile);
Client_host是SUPPOSED为模态,因此在用户关闭IE窗口之前不应执行delete_file语句。但是,它似乎是在启动查看器的client_host调用完成之前执行的。有什么想法吗?
答案 0 :(得分:1)
CLIENT_HOST与表单applet相关是模态的。窗体应用程序将被阻止,直到CLIENT_HOST返回。在IE关闭之前,使用CLIENT_HOST调用IE不会阻止应用程序。但这是因为iexplore.exe是一个Windows应用程序。 Windows应用程序阻止调用者,直到输入事件循环。您可以在命令行中查看此信息。输入电话,您将看到IE显示的提示。
如果要打开网页,为什么不使用WEB.SHOW_DOCUMENT?
修改强>
尝试使用cmd / C start / W“C:\ Program \ Internet Explorer \ iexplore.exe”调用IE。
start / W阻止调用者,直到windows应用程序真正关闭。
答案 1 :(得分:0)
我尝试以下方法 - 它有效: webutil_host.blocking('“”c:\ program \ Internet Explorer \ iexplore.exe“-k -noframemerging'||:URL)
查找“IE命令行参数”以获取这些参数的描述。