Windowsのプリンタ制御について
Windows10でプリンタ制御をしています。
印刷自体はできるのですが、印刷中やエラー状態を取得することが出来ません。
アプリの中で印刷中やエラー状態を画面で表示したいので
プリンタの状態を取得する方法は無いでしょうか?
開発環境は以下の通りです。
Windows10
python3.9
ブラザーのプリンタをイーサネットで接続しPortをTCP/IPポートで接続しています。
例)
WindowsのAPIを呼び出す為にwin32printingを使用しています。
印刷する為に以下のコードを実行します。
printer_name = win32print.GetDefaultPrinter()
hPrinter = win32print.OpenPrinter( printer_name )
hDC = win32ui.CreateDC ()
hDC.StartDoc(image_path)
hDC.StartPage()
// ここで画像を作成して screenは印刷する画像イメージです。
dib = ImageWin.Dib( screen )
dib.draw( hDC.GetHandleOutput(), (0, 0, int(screen.width*2), int(screen.height*2)) )
hDC.EndPage ()
hDC.EndDoc ()
hDC.DeleteDC ()
ジョブに追加されるので以下の処理をループさせて
プリンタの状態を取得しようとGetPrinterしていますが取得できません。
pr_ret = win32print.GetPrinter( hPrinter, 6 )
print( f"プリンタステータス:0x{pr_ret['Status']:08x}" )
発生している問題
印刷ジョブを実行した後、印刷中のステータスになるかと思ったのですが
全くステータスが取得できていません。
その他、用紙なし等も取得できません。
win32printのGetPrinterは状態を取得する関数だと思っているのですが
呼び出すタイミングや呼び出し方に制限があるのでしょうか?