PHP点击超级链接复制变量值到剪贴板,然后打开本地程序

因为客户需求,需要在网页中调用本地程序并用此程序打开指定目录,所以百度了一下,用网友提供的方式,按以下方式修改了注册表:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\xyzexe]
"URL Protocol"="D:\xyz.exe"
@="xyzProtocol"
[HKEY_CLASSES_ROOT\xyzexe\DefaultIcon]
@="D:\xyz.exe,1"
[HKEY_CLASSES_ROOT\xyzexe\shell]
[HKEY_CLASSES_ROOT\xyzexe\shell\open]
[HKEY_CLASSES_ROOT\xyzexe\shell\open\command]
@=""D:\xyz.exe" "%1""
经上面方式修改注册表后,通过在网页栏输入:xyzexe://,可以打开xyz.exe这个程序,在windows的运行栏里也输入上述xyzexe://也能打开。
说明一点,xyz.exe这个程序是我自己写的,为客户需求,这个程序的功能是:当用户复制一个保存有DICOM放射影像图像的文件夹路径后(即这个文件夹路径被复制到了WINDOWS剪贴板中,如:D:\DICOMFILE\20230325\MR\123),这时运行xyz.exe将会打开剪贴板路径下的图像文件夹。
目前的需求是:我正在用HTML+PHP做个功能,点击“阅片”这个超级链接时,先清空剪贴板内容,再将从数据库的imgPath1字段中读取出的值(就是DICOM图像文件夹的路径)复制到剪贴板,然后通过xyzexe://打开程序显示图像。
先写的代码如下,其中PHP那段能读取出imgPath1字段的值,href="xyzexe://"也能打开程序,但我不知道如何清空剪贴板并将其值复制进剪贴板中,然后通过点击超级链接打开程序:


<td>
<?php
$path = str_replace('$', '\\', $row_rsdb['imgPath1']);
?>
<a href="xyzexe://" target="_blank"> 阅片</a>
</td>

需要解决的代码,谢谢。

引用chatgpt部分指引作答:
要在PHP中清空剪贴板并将值复制到剪贴板中,可以使用JavaScript。以下是一个例子:

<td>
<?php
$path = str_replace('$', '\\', $row_rsdb['imgPath1']);
?>
<a href="#" onclick="copyToClipboard('<?php echo $path; ?>'); openProgram();" target="_blank">阅片</a>
</td>

<script>
function copyToClipboard(text) {
  var input = document.createElement('textarea');
  input.style.position = 'fixed';
  input.style.opacity = 0;
  input.value = text;
  document.body.appendChild(input);
  input.select();
  document.execCommand('Copy');
  document.body.removeChild(input);
}

function openProgram() {
  window.location.href = 'xyzexe://';
}
</script>

这里定义了两个函数,copyToClipboard和openProgram。copyToClipboard函数将传递给它的文本复制到剪贴板中。openProgram函数在调用xyzexe://URL时打开程序。

在超级链接中,调用这两个函数,首先通过copyToClipboard函数将路径复制到剪贴板中,然后调用openProgram函数打开程序。

引用chatGPT作答,您可以使用JavaScript来实现清空剪贴板和复制内容到剪贴板的功能,然后再使用超链接来调用本地程序。下面是一个示例代码:

<td>
<?php
    $path = str_replace('$', '\\', $row_rsdb['imgPath1']);
?>
    <a href="#" onclick="copyToClipboard('<?php echo $path; ?>');window.location.href='xyzexe://';return false;">阅片</a>
</td>

<script>
    function copyToClipboard(text) {
        var input = document.createElement("textarea");
        input.value = text;
        document.body.appendChild(input);
        input.select();
        document.execCommand("copy");
        document.body.removeChild(input);
    }
</script>

在这个示例中,我们将超链接的href属性设置为#,这是因为我们将通过JavaScript来处理链接的点击事件,而不是直接跳转到链接的地址。点击超链接时,onclick事件将调用名为copyToClipboard的JavaScript函数,该函数将接收一个参数text,该参数是要复制到剪贴板的文本内容。然后,我们在JavaScript函数中动态创建了一个textarea元素,并将其值设置为传递给函数的文本内容。接下来,我们将textarea元素添加到页面中,选择文本内容并执行复制操作,最后将textarea元素从页面中移除。最后,我们将使用window.location.href将超链接指向本地程序的URL,从而启动本地程序并打开指定的文件夹。

请注意,为了确保JavaScript代码能够在页面中正确执行,您需要将超链接放在标记中,而不是在标记中。