Configure Virtual Printer Port Redirection

大憨熊 提交于 2019-12-18 13:49:09

问题


I need to configure a virtual printer port to redirect it to a external program(.exe file) through c# code. Right now I am able to install a virtual port with some customization(thanks to bghh code). The attached picture illustrates the requirement. Any help will be highly appreciated.


回答1:


I found out solution to the above problem. All the printer ports registered on the system are listed in registry under the key "SYSTEM\ControlSet001\Control\Print\Monitors\Redirected Port\Ports"

Values under these keys can be edited to get the desired result. Below is the code to edit it using 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();


来源:https://stackoverflow.com/questions/10403805/configure-virtual-printer-port-redirection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!