ステータスモニタAPI |
ステータスモニタは、プリンタの状態の情報を取得するアプリケーション用にAPIを提供します。 アプリケーションが、自らが印刷したドキュメントの印刷完了を得る方法としては、Windows2000/XP上でWin32APIのGetJob()を使用することで確認できます。しかし、これはスプーラからプリンタに出力されたことを確認することであり、正常に印刷されたかを確認することができません。 ステータスモニタが提供するAPIを使用することにより、プリンタから『真の印刷完了』の情報を得ることができます。
ステータスモニタは、カスタムアプリケーション用に以下のようなAPIを提供しています。
サンプルプログラム及びヘッダファイルは、東北リコーのWebからダウンロードしてください。これらのAPIをVisualC++で作成したアプリケーションから使用する場合は LoadLibrary() を実行して、 DLLをロードしてください。
関数名 処理内容 Tric_RequestStatusNotify ステータスモニタにステータス通知要求を行います。 Tric_ReleaseStatusNotify ステータスモニタに出していたステータス通知要求を解除します。 Tric_RegistAllStatusGet 全てのステータスを受信することができる全ステータス通知要求を行います。 Tric_CancelAllStatusGet ステータスモニタに出していた全ステータス通知要求を解除します。 Tric_WriteDocID ドキュメントを判断するDOCIDを設定します。
ステータスモニタAPIを使用する時に、以下の識別子を使用します。
識別子 内容 SMONID ステータスモニタを識別します。値は、ステータス通知要求(Tric_RequestStatusNotify)時にステータスモニタから得ることができます。 DOCID ドキュメントを識別します。値は、アプリケーションがユニークに設定できます。印刷前に、ステータスモニタにTric_WriteDocIDで登録します。WM_COPYDATAによって得られるデータ内に DOCID が含まれますので、ドキュメントを識別することができます。
ステータスモニタAPIを使用した処理の流れを説明します。
- ステータスを要求するアプリケーション(AP1)
- Tric_RequestStatusNotify() を実行して、ステータスモニタにステータス通知要求し、ステータスモニタ識別子(SMONID)を取得します。
- Tric_WriteDocID() を実行して、ドキュメント識別子(DOCID)をステータスモニタに登録します。
- 印刷します。
- ステータスモニタから、WM_COPYDATAメッセージによって、プリンタからのステータスが送信されます。
- Tric_ReleaseStatusNotify() を実行して、ステータス通知要求を解除する。
- ステータスモニタが送信する全てのステータスを取得するアプリケーション(AP2)
- Tric_RegistAllStatusGet() を実行して、ステータスモニタに全てのステータス通知を要求をします。
- AP1 が、ステータス通知要求して印刷します。
- ステータスモニタから、AP1 に通知したメッセージと同じ内容がWM_COPYDATAメッセージで AP2 に送信されます。
- Tric_CancelAllStatusGet() を実行して、ステータス通知要求を解除します。
ステータスモニタからアプリケーションに通知される WM_COPYDATA は、以下のような構成になります。TRSM_STSHDR構造体(ステータスモニタAPI用tricsmon.hで定義)は、以下のような構造です。
wParam → NULL lParam → COPYDATASTRUCT構造体(Winuser.hで定義)へのポインタ
dwData TRIC_STATUS_SIGUNATURE(0x43495254) cbData TRSM_STSHDR構造体のサイズ lpData TRSM_STSHDR構造体へのポインタ typedef struct tagTR_StsData { DWORD dwSmonID; // ステータスモニタ識別子 DWORD dwDocID; // ドキュメント識別子 DWORD dwDataType; // データタイプ DWORD dwDataSize; // データサイズ データタイプによりサイズが異なる } TRSM_STSHDR, *PTRSM_STSHDR, FAR *LPTRSM_STSHDR;データタイプ
プリンタエラーコード一覧
tricsmon.h 定義値 値 説明 詳細データの内容(サイズ) TRSM_DT_NONE 0 データ無し 無し(0Byte) TRSM_DT_STARTDOC 1 印刷ドキュメントの開始 無し(0Byte) TRSM_DT_ENDDOC 2 印刷ドキュメントの終了 無し(0Byte) TRSM_DT_PRINTED 3 ページ印刷の完了 ページ数(4Byte) TRSM_DT_ANSDATA 4 応答データ 応答データ(要求コマンドによる) TRSM_DT_PRNSTATUS 5 プリンタステータス プリンタエラーコード(2Byte)
プリンタで発生したエラーは、プリンタの「取り扱い説明書」を参照してください。
言語モニタが検出するエラーは以下の2点です。
値 説明 1001 プリンタからの応答データ読込み失敗。 1002 プリンタからの応答待ちタイムアウト
関数実行時の戻り値として使われるエラーコードの一覧です。
tricsmon.h 定義値 値 説明 TRSM_ERR_SUCCESS 0 正常終了。 TRSM_ERR_SOCKET 1 ソケット通信がエラーになりました。 TRSM_ERR_WINAPI 2 Win32API実行がエラーになりました。 TRSM_ERR_NOSUPPORT 3 ステータスモニタへの要求がサポートされていません。 TRSM_ERR_MEMALLOC 4 メモリ領域を確保できませんでした。 TRSM_ERR_INVALID_PARAMETER 5 関数実行時のパラメータが不正です。 TRSM_ERR_SET_ALREADY 6 ステータスモニタに既に設定されています。 TRSM_ERR_NOT_FOUND 7 ステータスモニタに要求した対象物が見つかりません。 TRSM_ERR_SIZE_LARGE 8 データのサイズが大きすぎます。 TRSM_ERR_SIZE_SMALL 9 データのサイズが小さすぎます。 TRSM_ERR_REJECTED_SERVER 10 ステータスモニタサーバが要求を拒否しました。 TRSM_ERR_SMON_NORUNNING 11 ステータスモニタが起動していません。
- Windowsネットワークプリンタからステータスを取得する場合は、スプール形式を RAW にしてください。EMF ではステータスを取得できません。
- NTFSでフォーマットした環境にインストールされているWindows2000/XP時に、 Usersのセキュリティを持ったユーザでログインした場合、ステータスモニタAPI設定ファイル(hopesmon.tsm)のセキュリティを変更しないと、Tric_WriteDocID()しても設定が反映されません。windowsフォルダにあるhopesmon.tsmファイルのセキュリティの「変更」を許可にしてください。