请教,关于API函数EnumJobs获取打印总页数的问题

ribut9225 2012-01-31 11:44:32
使用API函数EnumJobs枚举打印作业,其他项目获取对的,就是打印总页数一直为0.请各位大大指点一下,

代码如下:
void fu_PrintJob()
{
JOB_INFO_1 *pJob1;
BOOL bRet;
DWORD dwNeed,dwItems;
long lRow,lRowCount;
CString strId,strRq,strSj,strUser,strPrinterName,strDocName,strPageCount; //日期、时间、使用者、打印机名称、文档名称、总页数
SYSTEMTIME t_UCT,t_Local; //UCT时间和本地时间
int k;
TIME_ZONE_INFORMATION timeinfo;

//获取打印作业数量
bRet = ::EnumJobs(hPrinter,0,0XFFFFFFFF,1,NULL,0,&dwNeed,&dwItems);

//分配内存空间
pJob1 = (JOB_INFO_1*)malloc(dwNeed);

//分别获取打印作业
bRet = ::EnumJobs(hPrinter,0,0XFFFFFFFF,1,(LPBYTE)pJob1,dwNeed,&dwNeed,&dwItems);

if(bRet)
{
for(k=0;k<dwItems;k++)
{
strId.Format("%d",pJob1[k].JobId); //ID
t_UCT = pJob1[k].Submitted;
::GetTimeZoneInformation(&timeinfo);
::SystemTimeToTzSpecificLocalTime(&timeinfo,&t_UCT,&t_Local);

strRq.Format("%d-%02d-%02d",
t_Local.wYear,
t_Local.wMonth,
t_Local.wDay
); //打印日期
strSj.Format("%d:%d:%d",
t_Local.wHour,
t_Local.wMinute,
t_Local.wSecond
); //打印时间
strPrinterName.Format("%s",pJob1[k].pPrinterName); //打印机名称
strDocName.Format("%s",pJob1[k].pDocument); //文档名称
strUser.Format("%s",pJob1[k].pUserName); //使用者名称
strPageCount.Format("%d",pJob1[k].TotalPages +1); //总页数,不知道为何总为0
//写入列表
lRowCount = pList->GetItemCount();
lRow = pList->InsertItem(lRowCount +1 ,strId);
//日期
pList->SetItemText(lRow,1,strRq);
//时间
pList->SetItemText(lRow,2,strSj);
//打印机名称
pList->SetItemText(lRow,3,strPrinterName);
//文档名称
pList->SetItemText(lRow,4,strDocName);
//所有者
pList->SetItemText(lRow,5,strUser);
//总页数
pList->SetItemText(lRow,6,strPageCount);
}
}
else
{
//strText += "枚举打印作业失败";
}
//释放内存空间
free(pJob1);

//写日志
fu_WriteLog(strId,strRq,strSj,strPrinterName,strDocName,strUser,strPageCount);
}
...全文
557 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ribut9225 2012-02-01
  • 打赏
  • 举报
回复
This value may be zero if the print job does not contain page delimiting information.
这个值可能是零,如果打印作业不包含页面划定信息

请问,有没有办法解决这个问题呢?
谢谢
Eleven 2012-01-31
  • 打赏
  • 举报
回复
typedef struct _JOB_INFO_1 {
DWORD JobId;
LPTSTR pPrinterName;
LPTSTR pMachineName;
LPTSTR pUserName;
LPTSTR pDocument;
LPTSTR pDatatype;
LPTSTR pStatus;
DWORD Status;
DWORD Priority;
DWORD Position;
DWORD TotalPages;
DWORD PagesPrinted;
SYSTEMTIME Submitted;
} JOB_INFO_1, *PJOB_INFO_1;

TotalPages
Specifies how many pages the document contains. This value may be zero if the print job does not contain page delimiting information.

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧