2011-12-07 19 views
4

文書を印刷するためにプリンタを選択する際に問題があります。プロセスは常にデフォルトのプリンタで文書を印刷します

私のコードは次のとおりです。

var filename = @"C:\Users\I\Desktop\test.doc"; 

PrintDialog pd = new PrintDialog(); 

pd.PrinterSettings =new PrinterSettings(); 

    if (DialogResult.OK == pd.ShowDialog(this)) 
    { 
     Process objP = new Process(); 

     objP.StartInfo.FileName = filename; 


     objP.StartInfo.WindowStyle = 

     ProcessWindowStyle.Hidden; //Hide the window. 

     objP.StartInfo.Verb ="print"; 

      objP.StartInfo.Arguments ="/p /h \"" + filename + "\" \"" + pd.PrinterSettings.PrinterName + "\""; 
     objP.StartInfo.CreateNoWindow = false; 
     //true;//!! Don't create a Window. 
     objP.Start(); 
     //!! Start the process !!// 
     objP.CloseMainWindow(); 
    } 

と何でも私が選ぶ、processは関係なく常にあるpd.PrinterSettings.PrinterNameのどのような値、デフォルトのプリンタを使用しないでしょう。

私のコードで何が問題になっていますか?

+0

「objP.StartInfo.Arguments」の値は、このコードをステップ実行したときに期待される値ですか?これはコマンドプロンプトで手動でキー入力すると機能しますか? –

答えて

2

このような何かを読み取るためにpd.PrinterSettings =new PrinterSettings();を変更してみてください:

pd.PrinterSettings =new System.Drawing.Printing.PrinterSettings; 

デフォルトではあなたはそれがちょうどFYIデフォルトのプリンタ名を返すプリンタ設定のインスタンスを作成するとき...あなたは、この

ような何かを試すことができます
//sudu code 
foreach(string strPrinter in PrinterSettings.InstalledPrinters) 
{ 
// or unless you know the name of the printer then skip this and assign it to the code above 
} 
3

動詞に「印刷」の代わりに「PrintTo」を使用します。すでにobjP.FileNameにファイル名を設定しているので、引数が複雑になる必要はありません。そこにプリンタ名だけを渡します。

var filename = @"C:\Users\I\Desktop\test.doc"; 

PrintDialog pd = new PrintDialog(); 

pd.PrinterSettings =new PrinterSettings(); 

if (DialogResult.OK == pd.ShowDialog(this)) 
{ 
    Process objP = new Process(); 

    objP.StartInfo.FileName = filename; 
    objP.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //Hide the window. 
    objP.StartInfo.Verb ="PrintTo"; 
    objP.StartInfo.Arguments = pd.PrinterSettings.PrinterName; 
    objP.StartInfo.CreateNoWindow = false; 
    //true;//!! Don't create a Window. 

    objP.Start(); 
    //!! Start the process !!// 

    objP.CloseMainWindow(); 
} 
関連する問題