Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置打印机';s通过提示符重定向端口_Java_Printing_Nsis_Redmon - Fatal编程技术网

Java 配置打印机';s通过提示符重定向端口

Java 配置打印机';s通过提示符重定向端口,java,printing,nsis,redmon,Java,Printing,Nsis,Redmon,我一直在尝试为我用Java编写的一个程序创建一个安装程序,该程序实现了GhostScript,它创建了一个虚拟打印机,将文件发送到该打印机。然后,我的程序读取文件并进行相应的管理。但是,我必须手动配置RedMon重定向端口(RPT1:),并使用该端口手动创建一台新打印机,并将.jar文件作为参数: 打印机端口上配置的参数: 我可以通过NSIS(我用来创建安装程序的程序)创建一台新打印机,如下所示: 有没有办法通过命令来配置端口?如果可能的话,我想为我的程序创建一个单独的端口(目前我使用的是默认

我一直在尝试为我用Java编写的一个程序创建一个安装程序,该程序实现了GhostScript,它创建了一个虚拟打印机,将文件发送到该打印机。然后,我的程序读取文件并进行相应的管理。但是,我必须手动配置RedMon重定向端口(RPT1:),并使用该端口手动创建一台新打印机,并将.jar文件作为参数:

打印机端口上配置的参数:

我可以通过NSIS(我用来创建安装程序的程序)创建一台新打印机,如下所示:

有没有办法通过命令来配置端口?如果可能的话,我想为我的程序创建一个单独的端口(目前我使用的是默认的RedMon端口),但也要在安装时将Java参数传递给它,这样最终用户就不必手动包含这些参数。我到处都找过,但我找到的每一本指南和文章都是手工完成的


谢谢你的帮助

这花了我一点时间,但我终于找到了使用RedMon设置新打印机端口所需的命令,我想我会在这里共享它,这样就不会有太多人难以找到它了

rundll32 "REDMONPATH\redmon32.dll", RedMonConfigurePort Port="PORT:" Command="JAVA" Arguments="-jar ""JAR"" ""C:\Program Files (x86)\gs\gs9.21\bin\gswin32c -I\""C:\Program Files (x86)\gs\gs9.21\lib\"" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -r300"""
其中,REDMONPATH是RedMon安装文件夹的路径,PORT是端口名,JAVA是JAVA.exe的路径,JAR是.JAR文件的路径。务必保留双引号,这是我们通过命令传递引号的方式。但是,您必须在RedMon安装文件夹上运行此命令。此外,您必须以管理员身份运行,否则可能会出现错误并错误地认为您做错了什么。在我的例子中,使用NSIS,这是完整的命令行:

ExecWait 'rundll32 "$INSTDIR\redmon\redmon32.dll", RedMonConfigurePort Port="SPE:" Command="C:\Program Files (x86)\Java\jre1.8.0_144\bin\java.exe" Arguments="-jar ""C:\Program Files (x86)\Impressora SPE\ImpressoraSPE.jar"" \""C:\Program Files (x86)\gs\gs9.21\bin\gswin32c -l \""C:\Program Files (x86)\gs\gs9.21\lib\"" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -r300"""'
之后,您可以正常使用新端口安装新打印机:

ExecWait 'rundll32 printui.dll,PrintUIEntry /if /f "$INSTDIR\ghostpdf.inf" /r "PORT:" /m "Ghostscript PDF" /b "PRINTER_NAME" /u /Y'`
如果您试图从命令提示符而不是NSIS运行此命令,则只需删除“ExecWait”位和命令周围的单引号。还将“$INSTDIR\something”替换为相应的完整路径

如果其他人在这个问题上需要进一步的帮助,鉴于我个人在这方面经历了相当艰难的时期,请随时在这里询问他们,我会尽力帮助他们


编辑:对于不断的编辑,我深表歉意,只是在我在不同版本的Windows中测试这些内容时,请确保留下对大多数人有帮助的说明。

NSIS标记的相关性如何?您正在调用外部事物…我正在通过NSIS传递用于安装打印机的命令,一旦程序安装,它将像您通常通过提示符一样执行这些命令。我想提到我正在使用NSIS可能会有所帮助,以防在某些特殊情况下它可能会有用。
ExecWait 'rundll32 printui.dll,PrintUIEntry /if /f "$INSTDIR\ghostpdf.inf" /r "PORT:" /m "Ghostscript PDF" /b "PRINTER_NAME" /u /Y'`