C++怎样获得打印机列表

来源:互联网 发布:c语言表达式 编辑:程序博客网 时间:2024/04/30 02:38
//获取打印机列表
int CloginDlg::GetPrintJobList(CString szPrintName)
{
HANDLE hPrinter;
DWORD dwNeeded, dwReturned,i;
JOB_INFO_1* pJobInfo;
DWORD res = 0;
res = OpenPrinter( (LPWSTR)(LPCWSTR)szPrintName,&hPrinter,NULL);
if(!res)
return -1;
res = EnumJobs(hPrinter,0,0xFFFFFFFF,1,0,0,&dwNeeded,&dwReturned);
if(res)
{
if(GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
//打印列表里没任务;
ClosePrinter(hPrinter);
return 0;
}
//MessageBox("print 2");
}
//MessageBox("print ok");
pJobInfo = (JOB_INFO_1*)malloc(dwNeeded);
if(pJobInfo == NULL)
{
//MessageBox("print 3");
ClosePrinter(hPrinter);
return -1;
}

ZeroMemory(pJobInfo,dwNeeded);
DWORD dwByteUsed;
res = EnumJobs(hPrinter,0,0xFFFFFFFF,1,(LPBYTE)pJobInfo,dwNeeded,&dwByteUsed,&dwReturned);
if(!res)
{
//MessageBox("print 4");
ClosePrinter(hPrinter);
free(pJobInfo);
return -1;
}
//MessageBox("print 5");
/*for(int i=0; i<dwReturned; i++)
m_listbox.AddString(pJobInfo[i].pDocument);*/
res = pJobInfo[0].Status;
free(pJobInfo);
ClosePrinter(hPrinter);
return res;
}
0 0
原创粉丝点击