• ベストアンサー

プリンターエラーの判定

プリンターの用紙切れやオフライン等の検出をしたいのですが、APIかなにかで出来るのでしょうか? Printerオブジェクト出力ならならON ERRORで判定は出来るみたいですが、帳票ツール(アクティブレポートOCX等)のときに判定する方法はあるのでしょうか? お解りになられる方がいらっしゃればお教え願います。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

印刷前にプリンタの状況を判定したいのであれば、VBでもWin32APIでも無理だと思います。 だだし、汎用的な方法ではありませんが、プリンタ機種よっては独自のDLLが使えるかもしれません。 VBから印刷(実際は印刷ジョブの作成)後に印刷ジョブの状態を取得するなら可能です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=120709 http://www.vbvbvb.com/jp/gtips/0351/gEnumJobs.html

torikokko
質問者

お礼

色々探してみたのですが印刷前の判定は無理みたいですね。有難う御座いました。

関連するQ&A

  • 出力するプリンタを指定したい。

    現在、VB6.0で開発を行い、帳票をACCESSのレポートを使用しています。 レポートを印刷した際に、VB側より指定したプリンタに出力したいのですが、決まって通常使うプリンタに出力されてしまいます。 プリンタは指定できない物なのでしょうか? ちなみに指定している方法は、デバイス名を記述し、設定されているプリンタを検索し、合うプリンタがあれば、その番号(?)を Set Printer = XXX(番号)          ↑忘れました、ごめんなさい。 と言うような形でコーディングしています。

  • プリンタの状態を知る方法

    只今、VB6のDataReportを使って帳票を作成しています。1つの雛型を使って、 複数のレポートを連続印刷しようとしていますが、DataReportとFormが非同期で あるため、DataReportがまだ帳票をプリンタに吐き出し終わっていないうちに、次の帳票を作ろうとしてしまい、エラーが出てしまいます。 色々調べて、MoveMemoryなるAPIを使ってプリンタの状態(印刷中、とかスプール中とか)を取得しようとしていますが、それもエラーがでてしまいます。 どうしたら、上手にプリンタの状態を知ることが出来るでしょうか? もしくは、非同期で動いているもの同士の同期を取るような方法がありましたら ぜひ教えてください。 よろしくお願いします。

  • プリンタの監視

    C#.NET にてプリンタ紙切れ等をリアルタイムで監視できる方法について検索していますが、なかなか良い情報がないためご協力をお願いいたします。 それなりに近いものはあったのですが、PRINTER_INFO_2::Statusを使用することでプリンタ情報は参照できることは分かりました。 ですが、これはWindowsが認識したものをAPIにて取得するだけであり プリンタ自体から直接リアルタイムに取得しているわけではないようです。 そこで、双方向通信が行えないプリンタとのリアルタイムでプリンタステータスを取得できる方法があれば教えてください。 PC環境 OS:Windows XP SP2 開発環境 C#.NET プリンタ DELL(1710n) よろしくお願いいたします。

  • 印刷時のジョブ名

    Printerオブジェクトを通して印刷するとジョブ名が、「MicrosoftVisualBasic」となりますが、これを最初から(EndDocで出力する前)変更する事は可能でしょうか? SetJob()APIで出力後変更する事も考えましたが、このAPIはWin9Xでは動作しないようですし、プリンタの監視ユーティリティの表示はそのままの場合がありました。 他の方法をご存知の方がおられたらぜひお願いします。

  • プリンターが動かない・・・

    WIN98から、WIN2000に乗せ替えてから、一ヶ月ホド経つのですが、 突然プリンターが使えなくなりました。 アンインストールして、再度インストールしてみたりしたのですが、 まったく動きません。 トラブルシューティングを、参考に、コマンドプロントから印刷を試みたのですが、やっぱり動きません。 FUJITU:DESKPOWER ME4/535 EPSON:pm-760C(プリンター) プリンターは、シリアル接続だったのですが、USB接続に変えて今は一応 動いているのですが、出来ればなおしたいと思います。 ちなみに、エラーログは、(LPT1検出時にエラーが見つかりました。 用紙切れです)と出ます。 資料が少なくて、申し訳ないのですが、どうか回答をお願いします。

  • 文字列の変換について

    Tyouhyou → 帳票 Printer → プリンター と文字列を変換するにはどうしたら良いですか? 何か良いツールがあれば教えて下さい。 変換アルゴリズムのヒントでも良いので教えて下さい。 よろしくお願い致します。

  • プリンターであるか否かの判断?

    特殊な目的の為、文字列変数Deviceを受取りその内容がプリンターを示すものであれば、APIのCreatDCでプリンターのHDCを作成します そしてそのプリンターのHDCを使用してStartDoc、StartPage、Textout等の一連の印刷動作をしたいと思います それには先ず文字列変数Deviceの内容がプリンターを示しているか? を判別しなくてはなりません 色々調べましたら WINSPOOL である場合はプリンターです 内容が NULL(空白)であればプリンターと判断すべきらしいです また内容が "ディスプレイ" ならば当然除外します しかしこんな判定法で宜しいのでしょうか? 特に文字列変数Deviceの内容が、コントロールパネル⇒デバイスとプリンター によって表示される Canon MP280 series Printer などの具体的なプリンター名称であった場合不安です 文字列変数Deviceの内容がプリンターを示しているか否かを判定するAPIなどはありませんが? また他の手段で簡単に判別する方法をご存知でしたら教えて下さい 宜しくお願い申し上げます

  • プリンタがオフライン状態

    皆さま、こんばんは。 早速ですが、質問させてください。 2台あるプリンタの1台が、オフライン状態になりました。 6月7日に、フレッツ光からauひかりに切り替えました。 その際、タブレット、プリンタ2台、パソコンの設定もやってもらいました。 2台あるプリンタの1台は複合機(電話、ファックス、コピー機能有り) です。 各々の機器は無線ランで繋がっています。 2台とも正常に印刷もできていました。 この複合機が4日ほど前にいきなりオフライン状態となりました。 パソコンデスクトップ上に、わくに囲まれて表示されているツールがある有ります。 そこに「ブラザーステータスモニター brother NFC-1737DN printer(1コピー) オフライン状態です」と表示。 もう1台は無線ランで印刷できます。 このことから無線ランは接続になっていると考えられます。 このプリンタのオフラインを解除する方法が有りますか? パソコンOSは、Windows10 です。 よろしくお願いします。

  • ASPからPDFファイルを自動作成

    ASPからある処理の結果を帳票として、PDFファイルに自動に作成したいのですがどのように実現したらいいのかわかりません。処理の流れは以下の通りです。 1.サーバサイドで実行したSQL文の結果を帳票の明細部として出力 2.XXX.PDFという名前のファイルをサーバに作成し、罫線、ヘッダ部およびSQL結果の明細部を描画していく エクセルに帳票レイアウトを作成し、セルにSQL結果を埋めていって、出力プリンタ先をAcrobat Writerにすればできると思うのですが・・・それ以外の市販PDF作成ツール等を利用しないで作成する方法はございますでしょうか? VBのPRINTERオブジェクトみたいなものがASPにはないとおもうのでどう実現したらいいのかわからないため 質問内容がおかしければ言ってください。 またできましたらサンプルコードを教えてください。 開発環境は、NT4.0、SQLサーバ7.0、Acrobat5.0をイントラネット環境で使用します。

  • VB6でのネットワークプリンタ(OS:WInXP)に対する印刷

    ご存じの方がおられましたら教えていただきたいのですが・・・ 当方、VB6(SP6)でアプリを作成し印刷機能も作りました。 以前はWin2000からプリンタサーバー(Win2000につながっているプリンタ)に対してネットワーク印刷を行っていました。APIを使用して用紙方向等変更できてました。簡単な処理の流れとしては、 (1)現在選択されているプリンタの情報を取得し記憶しておく。 (2)用紙方向等の変更 (3)印刷 (4)記憶しておいた内容にプリンタを戻す と言う具合です。 ところが、社内環境がかわり、WinXPからプリンタサーバー(WinXPにつながったプリンタ)に対して上記の処理を行うとエラーが出力されます。 調べたところ、始めにOpenPrinter関数を呼んでいるのですがこの時点で戻り値が0(関数が失敗)が帰ってきています。 ソースは以下のような感じです(一部抜粋) ' 標準的な権利を要求することを示す定数の宣言 Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 ' プリンタアクセス権の管理者権限を示す定数の宣言 Public Const PRINTER_ACCESS_ADMINISTER = &H4& ' プリンタアクセス権のユーザー権限を示す定数の宣言 Public Const PRINTER_ACCESS_USE = &H8& ' プリンタアクセス権すべての権限を示す定数の宣言 Public Const PRINTER_ALL_ACCESS = _ (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or _ PRINTER_ACCESS_USE) ' プリンタのオブジェクトハンドルを取得する関数の宣言 Declare Function OpenPrinter Lib "winspool.drv" _ Alias "OpenPrinterA" _ (ByVal pPrinterName As String, _ phPrinter As Long, _ pDefault As Any) As Long '**************************************************** '↓処理 ' プリンタ名を指定 strPrinterDeviceName = Printer.DeviceName ' プリンタアクセス権を指定 With udtPrinterDefaults .DesiredAccess = PRINTER_ALL_ACCESS End With ' プリンタのオブジェクトハンドルを取得 lngWin32apiResultCode = OpenPrinter(strPrinterDeviceName, lngPrinterHandle, udtPrinterDefaults) ↑ この変数の戻り値が0 試しに色々やってみました。 (1)WinXPからプリンタサーバー(OS:WinXP)  × (2)WinXPからプリンタサーバー(OS:Win2000)  ○ (3)プリンタサーバー(OS:WinXP)にアプリを ○ インストール後印刷 ※ローカルプリンタに対する印刷 うまくいかないのはプリンタサーバーがWinXPの時のみエラーが 出てしまうようです。 宜しくお願いします。

専門家に質問してみよう