获取打印机队列信息的问题。

cxxer 2022-04-11 16:10:02

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); //关闭打印机
}

 

 

...全文
149 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
C++ Builder
加入

1.3w+

社区成员

C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
申请成为版主
帖子事件
编辑了帖子
2022-04-11 16:11
创建了帖子 (查看)
2022-04-11 16:10
社区公告
暂无公告