用API函式:enumjobs,獲得了jobs_info_2的結構內容,但Submitted回傳為SYSTEMTIME 結構的地址值,如何獲得該地址值的實際結構呢?
謝謝!!!!!!!!!!!
uj5u.com熱心網友回復:
我用的是 job_info_1,這個 systemtime 也搞了很久都不行,后來發現其實是我想復雜了,其實對于結構套結構的情況其實并不需要特別處理,就按正常方法做就行了。先宣告 systemtime 全域結構,結構體為 8 個 int 子項;
再宣告 job_info_1 全域結構,submitted 的型別指定為 systemtime 即可,其它子項型別全為 ulong
// 取列印任務的狀態值
// 回傳值為列印任務的數量,回傳-1,錯誤
/*
Constant ulong JOB_STATUS_PAUSED = 1
Constant ulong JOB_STATUS_ERROR = 2
Constant ulong JOB_STATUS_DELETING = 4
Constant ulong JOB_STATUS_SPOOLING = 8
Constant ulong JOB_STATUS_PRINTING = 16
Constant ulong JOB_STATUS_OFFLINE = 32
Constant ulong JOB_STATUS_PAPEROUT = 64
Constant ulong JOB_STATUS_PRINTED = 128
*/
constant ulong JOB_INFO_1_LEN = (13+3)*4 // 3 可能是資料型別的數量
constant ulong SYSTEMTIME_LEN = 8*2
long nloop,rtn,ll_size
ulong ll_Needed,ll_Returned
job_info_1_pb lstr_info
systemtime lstr_systime
blob lbl_buffer,lbl_tmp
string ls_docname,ls_printer,ls_null
printer_defaults lstr_printer_defaults
if al_hprinter = 0 then
// 取當前列印機
ls_printer = ProfileString("win.ini", "windows", "device", "")
rtn = Pos(ls_printer, ",")
if rtn <> 0 then
ls_printer = Left(ls_printer, rtn - 1)
else
MessageBox("錯誤", "Win.ini 檔案中未指定默認列印機!", StopSign!)
return -1
end if
// 取列印機句柄
SetNull(ls_null)
lstr_printer_defaults.pDatatype = ls_null
lstr_printer_defaults.pDevMode = 0
lstr_printer_defaults.DesiredAccess = 8
rtn = OpenPrinter(ls_printer, al_hPrinter, lstr_printer_defaults)
if rtn = 0 then
MessageBox("錯誤", "列印機 “" + ls_printer + "” 無法打開!", StopSign!)
return -1
end if
end if
ll_Size = 0
l_GetJob:
lbl_buffer = blob(Space(ll_size))
if EnumJobs(al_hprinter, 0, 65535, 1, lbl_buffer, ll_size, ll_Needed, ll_Returned) = 0 then
if ll_size < ll_Needed then
ll_size = ll_Needed
goto l_GetJob
else
return -1
end if
end if
for nloop = 1 to long(ll_Returned)
lbl_tmp = BlobMid(lbl_buffer, (nloop - 1) * JOB_INFO_1_LEN + 1)
CopyMemory(lstr_info, lbl_tmp, JOB_INFO_1_LEN)
astr_job_info1[nloop].jobid = lstr_info.jobid
astr_job_info1[nloop].pprintername = string(lstr_info.pprintername, "address")
astr_job_info1[nloop].pmachinename = string(lstr_info.pmachinename, "address")
astr_job_info1[nloop].pusername = string(lstr_info.pusername, "address")
astr_job_info1[nloop].pdocument = string(lstr_info.pdocument, "address")
astr_job_info1[nloop].pdatatype = string(lstr_info.pdatatype, "address")
astr_job_info1[nloop].pstatus = string(lstr_info.pstatus, "address")
astr_job_info1[nloop].status = lstr_info.status
astr_job_info1[nloop].priority = lstr_info.priority
astr_job_info1[nloop].position = lstr_info.position
astr_job_info1[nloop].totalpages = lstr_info.totalpages
astr_job_info1[nloop].pagesprinted = lstr_info.pagesprinted
astr_job_info1[nloop].submitted.wyear = lstr_info.submitted.wyear
astr_job_info1[nloop].submitted.wmonth = lstr_info.submitted.wmonth
astr_job_info1[nloop].submitted.wdayofweek = lstr_info.submitted.wdayofweek
astr_job_info1[nloop].submitted.wday = lstr_info.submitted.wday
astr_job_info1[nloop].submitted.whour = lstr_info.submitted.whour
astr_job_info1[nloop].submitted.wminute = lstr_info.submitted.wminute
astr_job_info1[nloop].submitted.wsecond = lstr_info.submitted.wsecond
astr_job_info1[nloop].submitted.wmillisecond = lstr_info.submitted.wmillisecond
next
return ll_Returned
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103538.html
標籤:API 調用
上一篇:ReadProcessMemory函式在PB是的使用問題
下一篇:精簡ORACLE資料庫備份
