VB6でドットとレザーを判別する方法はどうしたらいいのでしょうか?

解決


Kuma  2003-12-04 03:57:47  No: 80719

ドットプリンターとレーザプリンターを
機能ごとで設定して印刷するようなプログラムを作成しているのですが
EnumPrintersなどのAPIを使用しても
プリンタ名は取得できてもそのプリンターが
ドットなのかレザーなのかの判別ができません。

どのようにしたらうまく判別できるのかを教えてください。

環境:Win2000Pro  VB6(SP5)


岡田 之仁  2003-12-04 05:11:49  No: 80720

プリンター情報には、タイプとしてそれら情報は直接的には無い
のですが・・・もし仮にトナーが無ければ、エラーの内容として
トナー無しが得られ、レーザープリンターとして認識可能ですが。

ですが、通常readyでオンライン状態であれば、判別つきません。

あとは、そのプリンターの解像度で判断するしかないと思います。

ドットプリンターの場合、140dpi〜200dpiが限界と思います。
レザープリンターの場合、最近はゆうに、600dpiはありますので
300dpiを境に、ドットとレーザーに識別っすればどうでしょうか?

        dpiX = GetDeviceCaps(Printer.hDC, LOGPIXELSX)
        dpiY = GetDeviceCaps(Printer.hDC, LOGPIXELSY)

で、X方向とY方向の解像度が得られます。X方向で十分だと思います。

Declare Function GetDeviceCaps Lib "gdi32.dll" _
   (ByVal hDC As Long, _
    ByVal nIndex As Long) As Long

Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90

を忘れずに・・・

ご検討下さい。

以上。


Kuma  2003-12-04 19:15:21  No: 80721

早速のレスありがとうございます。
いわれてみたら確かにそういう判別の仕方もありますね
おっしゃるとおりX,Yの解像度で判断したいと思います。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加