jvGetJobInfo(指定した印刷ジョブの全情報取得)
指定した印刷ジョブの全情報を取得します。
[構文]
Function jvGetJobInfo(ByVal printerName As String, ByVal printJobId As Long, ByVal bufLen As Long, ByVal info As String) As Long
C言語
int jvGetJobInfo(char *printerName, int printJobId, int bufLen, char *info);
JAVA
int jvGetJobInfo(String printerName, int printJobId, int bufLen, StringBuffer info);
Delphi
Function jvGetJobInfo(printerName: PAnsiChar; printJobId, bufLen: Longint; info: PAnsiChar): Longint;
設定項目 |
内容 |
printerName |
プリンタ名称 |
printJobId |
印刷ジョブID |
bufLen |
情報取得バッファの長さ(バイト単位) |
info |
情報取得バッファ |
リターンコード
定数 |
値 |
内容 |
|
1以上 |
情報取得に必要なバッファのサイズ |
|
0 |
正常終了 |
JV_ERR_PRINTERNAME |
-10 |
プリンタ名称エラー |
JJV_ERR_GET_JOB |
-92 |
GetJobエラー |
JV_ERR_PARAMETER |
-2 |
パラメータエラー |
JV_ERR_MEMORY |
-4 |
メモリ関連エラー |
[解説]
情報が正常に取得できた時は、リターンコードに0が返ります。バッファサイズの不足により情報が取得できない時は、リターンコードに必要なサイズが返ります。リターンコードが1以上の場合は、リターンコード分のバッファを確保し、もう一度コールしてください。
全情報の内容と並び順は次の通りです。項目間はカンマで区切られます。
1.プリンタ名
2.マシン名
3.ユーザー名
4.印刷ジョブ名(DocNameプロパティで指定した名称)
5.印刷ジョブを記録するために使われるデータの種類
6.印刷ジョブの状態(文字列)
7.印刷ジョブの状態(フラグ)
8.ジョブの優先順位
9.印刷キュー内のジョブの位置
10.文書のページ数
11.すでに印刷されたページ数
12.この文書がスプールされた時間(hh:mm:ss YY/MM/DD)
「7.印刷ジョブの状態」は、次の値のうち、該当する値の合計値となります。
定数 |
値 |
内容 |
JV_JOBSTATUS_PAUSED |
1 |
一時停止 |
JV_JOBSTATUS_ERROR |
2 |
エラー |
JV_JOBSTATUS_DELETING
|
4 |
削除中 |
JV_JOBSTATUS_SPOOLING
|
8 |
スプール中 |
JV_JOBSTATUS_PRINTING
|
16 |
印刷中 |
JV_JOBSTATUS_OFFLINE |
32 |
オフライン |
JV_JOBSTATUS_PAPEROUT
|
64 |
紙切れ |
JV_JOBSTATUS_PRINTED |
128 |
印刷済み |
印刷中のプリンタ名称は、jvGetStringで取得することができます。使用できるプリンタの一覧はjvGetPrinterNameで取得することができます。
印刷中の印刷ジョブIDはjvStartDoc実行直後にjvGetLongで取得することができます。
bufLen
に0を指定すると、必要なバッファサイズを取得します。 JAVAでは、この値は無視されます。
[コーディング例]
Dim jid&, ret&, bufLen&, PrintJobId&,
PrinterName$
jid = jvCreate(JV_PRINTER, form1.hWnd, 0, 0,
0, 0, "")
ret = jvSetForm(jid, "c:\JiveReport\納品書.jfm",
1,"", 100, 0, 0)
ret = jvStartDoc(jid, "納品書", "")
'印刷ジョブIDの取得
PrintJobId = jvGetLong(jid, JV_JOB_ID)
'プリンタ名の取得
PrinterName = Space(33)
ret = jvGetString(jid, JV_PRINTER_NAME,PrinterName)
|
ret = jvEndPage(jid)
ret = jvEndDoc(jid)
ret = jvClose(jid)
'情報の取得に必要なバッファサイズを取得する
bufLen = jvGetJobInfo(PrinterName, PrintJobId, 0, jobInfo)
If bufLen > 0 Then
'取得用バッファを確保し、再度実行する
jobInfo = Space(bufLen)
'ジョブのすべての情報を取得する
ret=jvGetJobInfo(PrinterName,PrintJobId,bufLen,jobInfo)
If ret <> 0 Then
MsgBox "jvGetJobInfo Error " + CStr(ret)
Else
JobStatus.Caption = jobInfo
End If
Else
MsgBox "jvGetJobInfo Error " + CStr(ret)
End If
:
:
: