ステータスモニタAPI

概要

ステータスモニタは、プリンタの状態の情報を取得するアプリケーション用にAPIを提供します。

アプリケーションが、自らが印刷したドキュメントの印刷完了を得る方法としては、Windows2000/XP上でWin32APIのGetJob()を使用することで確認できます。しかし、これはスプーラからプリンタに出力されたことを確認することであり、正常に印刷されたかを確認することができません。

ステータスモニタが提供するAPIを使用することにより、プリンタから『真の印刷完了』の情報を得ることができます。

  1. 関数
  2. 識別子
  3. 処理の流れ
  4. WM_COPYDATA内データ構造
  5. エラーコード
  6. 注意事項

関数

ステータスモニタは、カスタムアプリケーション用に以下のようなAPIを提供しています。
サンプルプログラム及びヘッダファイルは、東北リコーのWebからダウンロードしてください。

関数名 処理内容
Tric_RequestStatusNotify ステータスモニタにステータス通知要求を行います。
Tric_ReleaseStatusNotify ステータスモニタに出していたステータス通知要求を解除します。
Tric_RegistAllStatusGet 全てのステータスを受信することができる全ステータス通知要求を行います。
Tric_CancelAllStatusGet ステータスモニタに出していた全ステータス通知要求を解除します。
Tric_WriteDocID ドキュメントを判断するDOCIDを設定します。

これらのAPIをVisualC++で作成したアプリケーションから使用する場合は LoadLibrary() を実行して、 DLLをロードしてください。

識別子

ステータスモニタAPIを使用する時に、以下の識別子を使用します。

識別子 内容
SMONID ステータスモニタを識別します。値は、ステータス通知要求(Tric_RequestStatusNotify)時にステータスモニタから得ることができます。
DOCID ドキュメントを識別します。値は、アプリケーションがユニークに設定できます。印刷前に、ステータスモニタにTric_WriteDocIDで登録します。WM_COPYDATAによって得られるデータ内に DOCID が含まれますので、ドキュメントを識別することができます。

処理の流れ

ステータスモニタAPIを使用した処理の流れを説明します。

ステータスを要求するアプリケーション(AP1)
  1. Tric_RequestStatusNotify() を実行して、ステータスモニタにステータス通知要求し、ステータスモニタ識別子(SMONID)を取得します。
  2. Tric_WriteDocID() を実行して、ドキュメント識別子(DOCID)をステータスモニタに登録します。
  3. 印刷します。
  4. ステータスモニタから、WM_COPYDATAメッセージによって、プリンタからのステータスが送信されます。
  5. Tric_ReleaseStatusNotify() を実行して、ステータス通知要求を解除する。

ステータスモニタが送信する全てのステータスを取得するアプリケーション(AP2)
  1. Tric_RegistAllStatusGet() を実行して、ステータスモニタに全てのステータス通知を要求をします。
  2. AP1 が、ステータス通知要求して印刷します。
  3. ステータスモニタから、AP1 に通知したメッセージと同じ内容がWM_COPYDATAメッセージで AP2 に送信されます。
  4. Tric_CancelAllStatusGet() を実行して、ステータス通知要求を解除します。

WM_COPYDATA内データ構造

ステータスモニタからアプリケーションに通知される WM_COPYDATA は、以下のような構成になります。

wParam NULL
lParam COPYDATASTRUCT構造体(Winuser.hで定義)へのポインタ
dwData TRIC_STATUS_SIGUNATURE(0x43495254)
cbData TRSM_STSHDR構造体のサイズ
lpData TRSM_STSHDR構造体へのポインタ

TRSM_STSHDR構造体(ステータスモニタAPI用tricsmon.hで定義)は、以下のような構造です。

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 ステータスモニタが起動していません。

注意事項

  1. Windowsネットワークプリンタからステータスを取得する場合は、スプール形式を RAW にしてください。EMF ではステータスを取得できません。
  2. NTFSでフォーマットした環境にインストールされているWindows2000/XP時に、 Usersのセキュリティを持ったユーザでログインした場合、ステータスモニタAPI設定ファイル(hopesmon.tsm)のセキュリティを変更しないと、Tric_WriteDocID()しても設定が反映されません。windowsフォルダにあるhopesmon.tsmファイルのセキュリティの「変更」を許可にしてください。
[Back]