2012-03-01 7 views
2

Webブラウザコントロールを使用しているときにプリンタの向きを変更することはできますか?私はそれを風景に変更する必要があります。プリンタ自体のプリンタのデフォルト値を変更する必要がある場合は、完了した後に設定し直すだけでOKです。 (それは私が現在、デフォルト以外のプリンタに印刷することと関係がある)。C#のWebブラウザーコントロールから印刷するときのページの向きを設定します。 (非WPFアプリケーション)

私は現在の向きを変更する方法を誰もが知っている

private string SetDefaultPrinter(string newDefaultPrinter) 
{ 
    //Get the list of configured printers: 
    string strQuery = "SELECT * FROM Win32_Printer"; 
    string currentDefault = string.Empty; 

    System.Management.ObjectQuery oq = new System.Management.ObjectQuery(strQuery); 
    System.Management.ManagementObjectSearcher query1 = new System.Management.ManagementObjectSearcher(oq); 
    System.Management.ManagementObjectCollection queryCollection1 = query1.Get(); 
    System.Management.ManagementObject newDefault = null; 

    foreach (System.Management.ManagementObject mo in queryCollection1) 
    { 
     System.Management.PropertyDataCollection pdc = mo.Properties; 
     if ((bool)mo["Default"]) 
     { 
      currentDefault = mo["Name"].ToString().Trim(); 

      if (newDefaultPrinter == null || newDefaultPrinter == string.Empty) 
      { 
       //Just need to know the default name 
       break; 
      } 
     } 
     else if (mo["Name"].ToString().Trim() == newDefaultPrinter) 
     { 
      //Save this for later 
      newDefault = mo; 
     } 
    } 

    //Reset the default printer 
    if (newDefault != null) 
    { 
     //Execute the method 
     System.Management.ManagementBaseObject outParams = newDefault.InvokeMethod("SetDefaultPrinter", null, null); 
    } 

    return currentDefault; 
} 

...私は自分の印刷ジョブで行われていたときに、それをバックに設定、その後、デフォルトのプリンタを設定temporarealyためにこれを使用しますか?

+0

[WindowsフォームWebブラウザーコントロールからのランドスケープでの印刷](http://stackoverflow.com/questions/6335678/printing-in-landscape-from-a-windows-forms-webbrowser-control)が役に立ちます。 –

+0

ありがとうございましたJay、うん、私はその1つを見つけ、その質問の特定の答えでアプリケーションをチェックしようとしました。プロジェクト内のアプリケーションを動作させることは決してできませんでした。しかし、その質問で私は実際にその質問に答えた答えを見たことはありませんでした。私はSOなどの他のいくつかの質問を見つけましたが、C#、またはnon-wpfを直接参照している人はいませんでした。私はまた、デフォルトのプリンタを設定するために私の現在のコードについてのビットを追加したかった。 ;) –

+0

申し訳ありませんが、私はあなたの非WPF状態に気付かなかった。私はもともと、あなたが求めていることをする方法がないと答えました。[kb236777](http://support.microsoft.com/kb/236777)私は本当にこれにチェックインしていないので、私の答えを削除したが、私は実現しました。 –

答えて

0

//編集: 私はそれを間違ってテストしていました。このレジストリキーを参照しているドキュメントは、Windows CE用です。正しい答えは、ドキュメントで "説明されている"ことはできません。http://support.microsoft.com/kb/236777

考えられる回避策は、 transform:rotate(90deg))、相対位置は古いものを維持しているので、複数のページではちょうど混乱です。

OLD ANSWER //

...ので、基本的な何かを行うことができないことが信じられないです: 私は最終的に同じと探していましたが、あなたが本当にプリンタの設定を変更できないことがわかりました(ページの向き、ヘッダー、フッター、余白など)をWebブラウザコンポーネントで直接編集することができます。これを行う唯一の方法はレジストリキーを変更してInternet Explorerのデフォルト動作を設定することです。ページの向きについては

それは次のようになります。

Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true).SetValue("PageOrientation", 2); 

あなたは古い値を保持し、印刷後にそれを復元する必要があります。

+0

"基本的なことができないことは信じられないほどです..."私は同意します! –

関連する問題