13,870
社区成员




void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
HANDLE hPrinter; //打印机句柄
String PrinterName = "Hewlett-Packard HP LaserJet Pro MFP M128fw";
//打印机名称
WORD wNoJobs; //希望获取的作业数
DWORD dwS; //Job_Info的字节数
JOB_INFO_1 Job_Info[10]; //打印队列信息
DWORD dwNeeded;
DWORD dwReturned; //返回作业数
bool bRet;
UINT i;
if (!OpenPrinter(PrinterName.c_str(), &hPrinter, NULL)) //打开打印机名称
{
MessageBox(frmMain->Handle, L"打开打印机失败。", L"信息", MB_OK);
return; //退出测试
}
dwS = sizeof(Job_Info);
dwNeeded = 0;
dwReturned = 0;
wNoJobs = 10;
bRet = EnumJobs(hPrinter, 0, wNoJobs, 1, (LPBYTE)(&Job_Info),
dwS, &dwNeeded, &dwReturned);
if (bRet) //显示打印队列信息
{
Memo1->Clear();
Memo1->Lines->Add(String("共有打印任务:") + dwReturned + "个。");
for (int i=0; i < dwReturned; i++)
{
Memo1->Lines->Add(String("第") + IntToStr(i+1) + " 个打印任务有 "
+ Job_Info[i].TotalPages + "页。");
}
}
else
MessageBox(Handle, L"未能正确获取打印作业信息。", L"警告",
MB_OK | MB_ICONWARNING);
ClosePrinter(hPrinter); //关闭打印机
}