2012-05-01 2 views
1

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

Configuring virtual printer port redirection manually

ответ

3

я узнал решение вышеуказанной проблемы. Всех портов принтера зарегистрированных в системе, перечислены в реестре под ключом «SYSTEM \ ControlSet001 \ Control \ Print \ Monitors \ Redirected Порт \ порты»

Значение в этих клавишах могут быть отредактированы, чтобы получить желаемый результат , Ниже приведен код для его редактирования с помощью 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(); 
+0

Я пытаюсь настроить виртуальный принтер для печати из приложений, а затем перенаправить PostScript в свой собственный рабочий процесс. Я не уверен, что весь процесс для достижения этого или связанных с ним задач, кажется, есть 2 части, драйвер и монитор. Информация выше, кажется, что монитор - это правильно? У меня есть код, создающий записи реестра, хотя я не вижу порт, если попытаюсь создать драйвер вручную. –

+0

Я нахожу этот код запутанным, почему существует цикл foreach? Кажется, это нецелесообразно и может быть значительно упрощено. Простите мой C#, но разве это не функционально эквивалентно? http://ideone.com/YAmUO6 –

 Смежные вопросы

  • Нет связанных вопросов^_^