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 に答える