C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.69323 の関連記事表示

<< 0 >>
■69323  Re[1]: プリンタをVB.NETからカラー設定する
□投稿者/ Jitta -(2013/12/16(Mon) 22:07:27)
>
    No69301 (じぇじぇじぇ さん) に返信
     プリンター メーカーに確認しましょう。

     プリンターの印刷設定は、DEVMODEW という構造体で制御されます。
    http://msdn.microsoft.com/en-us/library/windows/hardware/ff552837.aspx

    この内容は、Windows Vista 以降ならば、ユーザー毎に保存されています。
    HKEY_CURRENT_USER\Printers\DevmodePerUser の、プリンター名

    dmColor メンバーが、プリンターがカラー印刷に対応しているかどうかを示すフラグです。
    このドライバーは、このフラグを TRUE にして通知しますが、
    アプリケーションがこのフラグを FALSE に設定すると、
    白黒印刷となります(実現方法は、ドライバーに任されます)。

     ところが、MSDN で説明されている構造体は半分だけなのです!!
    この構造体の後ろには、メーカーが自由に定義できるデータがあります。
    標準のプロパティで変更できるのは、MSDN で説明されている部分のみです。
    メーカー定義の部分は、メーカーが提供する方法、通常は UI によってのみ、変更可能です。

     私が使っている FUJI-XEROX のプリンターでは、
    カラーについての設定が、「プリンターのプロパティ」で表示されるところと、
    「印刷設定」で表示されるところにあります。
    このうち、「プリンターのプロパティ」で表示される方の設定は、
    「印刷設定」で表示される設定よりも強制力を持っています。
    そのため、「印刷設定」でカラー印刷を指示しても、
    「プリンターのプロパティ」が白黒印刷を指示していると、白黒で印刷されます。


     もし、レジストリの操作ができるなら、次のような確認方法もあります。

    1 プリンターの印刷設定で、「カラー印刷」にします。
    2 上記のレジストリ キーをエクスポートします。
    3 プリンターの印刷設定で、「白黒印刷」にします。
    4 上記のレジストリ キーを、先とは別の名前でエクスポートします。

    両方のファイルを比較して、先頭から何バイト目が違っているか、確認します。
    0xDC、220バイト以内が違っているなら、標準のプロパティで変えられるはずです。
    220バイト目よりも後ろが変わっているなら、標準のプロパティでは変えられません。
    もちろん、カラー印刷に関わる設定が複数あれば、全てを確認してください。


     もし、プラットフォーム呼び出しができるなら、次のような解決方法があります。

    1 プリンターの設定を、特別に印刷したい状態にします。
    2 プラットフォーム呼び出しで DocumentProprities を呼び出し、DEVMODEW 構造体を取得します。
    3 その DEVMODEW 構造体を保存しておきます。
    4 プリンターの設定を、通常使いたい設定にします。
    5 アプリケーションからの印刷時に、3で保存した DEVMODEW を読み込みます。
    6 DocumentProperties 関数で、特別に印刷したい状態に設定します。


     そして、多くの場合、ユーザー企業では「カラー印刷」に設定したプリンターと、
    「白黒印刷」に設定したプリンターの2つを作っていると思います。
    いちいち印刷設定を開くより、プリンターを選ぶ方が楽ですから。
記事No.69301 のレス /過去ログ118より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -