ドットプリンターとレーザプリンターを
機能ごとで設定して印刷するようなプログラムを作成しているのですが
EnumPrintersなどのAPIを使用しても
プリンタ名は取得できてもそのプリンターが
ドットなのかレザーなのかの判別ができません。
どのようにしたらうまく判別できるのかを教えてください。
環境:Win2000Pro VB6(SP5)
プリンター情報には、タイプとしてそれら情報は直接的には無い
のですが・・・もし仮にトナーが無ければ、エラーの内容として
トナー無しが得られ、レーザープリンターとして認識可能ですが。
ですが、通常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
を忘れずに・・・
ご検討下さい。
以上。
早速のレスありがとうございます。
いわれてみたら確かにそういう判別の仕方もありますね
おっしゃるとおりX,Yの解像度で判断したいと思います。
ありがとうございました。
ツイート | ![]() |