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 
: 
: 
: