Bueno, lo he solucionado.
En el cliente hay una aplicación que se encarga de abrir un cajón portamonedas (va en el COM1).
Hay una aplicación Delphi muy sencilla a la que he llamado abrecaja.exe y está en c:\ (del cliente) (Programa normal, no activeX, aunque me he quedado con la desilusión de poder hacerlo de esa forma)
Esta es la aplicación
Desde HTML he utilizado:
Código PHP:
<script language="javascript">
<!--
function abre()
{
RegWsh = new ActiveXObject("WScript.Shell");
RegWsh.Run("c:\abrecaja.exe");
}
//-->
</script>
También he tenido que poner
http://localhost/ como sitio de confianza en el Internet Explorer del cliente y personalizar con todos los permisos.
La intranet está montada con Win Xp SP2, Apache, PHP y MySql.
Gracias a todos por vuestra ayuda.