能否通过自定义URL协议打开Photoshop并同时启动指定CEP扩展?
实现方案
步骤1:修改网页自定义协议链接,携带扩展标识参数
你可以在自定义协议后追加扩展ID参数,用于告知本地处理程序需要启动的目标扩展,修改后的CustomProtocol.html代码如下:
<html> <script type="text/javascript" src="CustomProtocol.js"></script> <body> Hey, I'm a web page ! <a href="my-prot://launch?extId=你的扩展ID">Run Photoshop 并打开扩展</a> </body> </html>
扩展ID可在扩展目录下的
manifest.xml文件中,查找<Extension>标签的Id属性获取,你的扩展已经存放在C:\Program Files\Common Files\Adobe\CEP\extensions路径下,Photoshop可正常识别。
步骤2:修改自定义协议的本地处理逻辑
你之前注册自定义协议时,注册表中关联的是直接启动Photoshop,现在改为关联一个PowerShell脚本,实现启动PS同时触发扩展打开:
- 先在本地创建一个脚本文件
C:\ps-launcher.ps1,内容如下:
# 接收自定义协议传入的参数 $rawUrl = $args[0] # 提取扩展ID参数 if ($rawUrl -match 'extId=([^&]+)') { $extId = $matches[1] # 生成临时JSX脚本,用于通知PS打开指定扩展 $jsxPath = "$env:TEMP\open-extension.tmp.jsx" "try { app.openExtension('$extId') } catch(e) {}" | Out-File $jsxPath -Encoding ASCII # 启动Photoshop并自动执行JSX脚本,请替换为你本地实际的Photoshop安装路径 Start-Process "C:\Program Files\Adobe\Adobe Photoshop 2024\Photoshop.exe" -ArgumentList "/r `"$jsxPath`"" } else { # 没有传扩展ID时仅启动PS,请替换为你本地实际的Photoshop安装路径 Start-Process "C:\Program Files\Adobe\Adobe Photoshop 2024\Photoshop.exe" }
- 修改注册表中自定义协议的关联配置:
打开注册表编辑器,定位到HKEY_CLASSES_ROOT\my-prot\shell\open\command,将默认值修改为:
powershell.exe -ExecutionPolicy Bypass -File "C:\ps-launcher.ps1" "%1"
验证效果
保存所有修改后,点击网页上的按钮,会触发自定义协议调用PowerShell脚本,自动启动Photoshop并打开你指定的CEP扩展。
内容的提问来源于stack exchange,提问作者Fitspade
相关产品推荐
相关产品推荐

