Настройка перенаправления портов виртуального принтера

Мне нужно настроить порт виртуального принтера для перенаправления его во внешнюю программу (файл.exe) через код C#. Прямо сейчас я могу установить виртуальный порт с некоторыми настройками (благодаря bghh- коду). Прикрепленное изображение иллюстрирует требование. Любая помощь будет высоко оценена.

Настройка перенаправления порта виртуального принтера вручную

1 ответ

Решение

Я нашел решение вышеуказанной проблемы. Все порты принтера, зарегистрированные в системе, перечислены в реестре под ключом "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();
Другие вопросы по тегам