1

我需要配置一个虚拟打印机端口以通过 c# 代码将其重定向到外部程序(.exe 文件)。现在我可以安装一个带有一些自定义的虚拟端口(感谢bghh代码)。附图说明了要求。任何帮助将不胜感激。

手动配置虚拟打印机端口重定向

4

1 回答 1

4

我找到了解决上述问题的方法。系统上注册的所有打印机端口都列在注册表项“ SYSTEM\ControlSet001\Control\Print\Monitors\Redirected Port\Ports ”下

可以编辑这些键下的值以获得所需的结果。下面是使用 c# 编辑它的代码。

bool found = false;
string portName = "testing:";
RegistryKey PrinterPort = Registry.LocalMachine.OpenSubKey("SYSTEM\\ControlSet001\\Control\\Print\\Monitors\\Redirected Port\\Ports", true);
foreach (string pp in PrinterPort.GetSubKeyNames())
{
    if (pp == portName)
    {
        PrinterPort = Registry.LocalMachine.OpenSubKey("SYSTEM\\ControlSet001\\Control\\Print\\Monitors\\Redirected Port\\Ports"+"\\"+portName, true);
        found = true; break;
    }
}
if (found)
{
    PrinterPort.SetValue(@"Arguments", "@C:\\gs\\pdfwrite.txt -sOutputFile=\"d:\\hello.pdf\" -c .setpdfwrite -f -");
    PrinterPort.SetValue(@"Command", "c:\\gs\\bin\\gswin32c.exe");
    PrinterPort.SetValue(@"Delay", 0x12c);
    PrinterPort.SetValue(@"LogFileDebug", 0x0);
    PrinterPort.SetValue(@"LogFileName", "");
    PrinterPort.SetValue(@"LogFileUse", 0x0);
    PrinterPort.SetValue(@"Output", 0x0);
    PrinterPort.SetValue(@"Printer", "Send To Cool Printer");
    PrinterPort.SetValue(@"PrintError", 0x0);
    PrinterPort.SetValue(@"RunUser", 0x0);
    PrinterPort.SetValue(@"ShowWindow", 0x0);
}
PrinterPort.Close();
于 2012-05-02T20:22:32.220 回答