4

WPF アプリケーションで特定のプリンターを呼び出して印刷したいと考えています。私は3台のプリンターを持っています バーの請求書用のプリンター1を想定します キッチンの請求書用のプリンター2を印刷します ゲストの請求書用のプリンター3を印刷します 印刷中にデータベースに既に保存されているプリンター名を印刷します DBからプリンター名を取得し、デフォルトのプリンターではなく、特定のプリンターから印刷したい これが私のものですコード

var v = new PrinterDAL().GetPrinterSettings();
try
{
   System.Threading.Thread thread = new System.Threading.Thread(new 
      System.Threading.ThreadStart(
            delegate()
            {   
                gridPrint.Dispatcher.Invoke(DispatcherPriority.Normal,
                    new Action(
                    delegate()
                    {
                            PrintDialog printDialog = new PrintDialog();
                            printDialog.PrintQueue = new PrintQueue(
                                new PrintServer(@"\\" + v.BarPrinter), "");
                            printDialog.PrintVisual(gridPrint, "");
                            this.Close();
                    }
                ));
            }
            ));
            thread.Start();
}
catch (Exception ex)
{
     Xceed.Wpf.Toolkit.MessageBox.Show(ex.Message, "", MessageBoxButton.OK, 
                                       MessageBoxImage.Error);
}

このコードから例外が発生します

「PrintServer オブジェクトの作成中に例外が発生しました。Win32 エラー: プリンター名が無効です。」

4

1 に答える 1

9

\\resourcePrintServerは、プリンター名ではなく、UNC 形式 ( ) のコンピューターまたはプリンター サーバー デバイスを使用するインスタンスである必要があります。

たとえば、ドメイン内のコンピューターの名前が KashifPC で、「Printer1」というプリンターを構成している場合、次を使用できます。

//example code. no error handling.
PrintServer localPS = New PrintServer(@"\\KashifPC")
PrinterQueue printer1 = localPS.GetPrintQueue("Printer1") //v.BarPrinter???
PrintDialog printDialog = new PrintDialog();
printDialog.PrintQueue = printer1
//rest of code
于 2012-11-13T08:43:03.187 に答える