【发布时间】:2016-04-20 10:30:36
【问题描述】:
我有一个网络应用程序。我从使用 Delphi 创建的 Windows 应用程序启动它。 在我的代码中,我使用
启动 chromeShellExecEx(ChromePath, AppStartCmd, '', SW_SHOWMAXIMIZED)
(https://github.com/project-jedi/jcl/blob/master/jcl/source/windows/JclShell.pas)
如果第一个 Chrome 进程是我在我的电脑上启动的第一个进程,如果我想打开另一个 Chrome 窗口(例如,用户启动电脑,启动应用程序,然后他想在谷歌上搜索一些东西..)我有这条消息
否则,如果我先打开一个 Chrome 页面,然后我想启动 webapp,它就可以正常工作。
对于我的测试,当我使用相同的参数启动应用程序时,我制作了一个 chrome 的桌面快捷方式
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --app=http://myapppath
在这种模式下,chrome 可以正常工作。
【问题讨论】:
-
你应该使用 CreateProcess 而不是 ShellExecute
-
您需要完全运行 Chrome 吗?或者它可以是默认的系统浏览器?因为对于默认浏览器,您可以运行
ShellExecEx('http://site.url')并且不要弄乱参数。 URL 将由系统处理并执行 HTTP 链接的默认应用程序。 -
它不是匿名进程。它具有更高权限(管理员)的进程使用 RunAs
ShellExecEx(ChromePath, AppStartCmd, 'runas', SW_SHOWMAXIMIZED);代替。或搜索ShellExecuteElevated。
标签: google-chrome delphi