编程实现后台打印

本文介绍了一种无需用户干预即可后台打印的方法,通过Windows API函数如CreateDC、StartDoc等实现打印功能。文章提供了完整的示例代码,展示了如何创建打印机设备上下文、开始及结束打印作业。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后台打印即打印时不弹出打印对话框,在某些不需要用户干预的时候非常有用。利用以下API可以很容易实现后台打印:

1.创建打印机DC

CreateDC(  LPCWSTR pwszDriver, LPCWSTR pwszDevice, LPCWSTR pszPort, DEVMODEW * pdm);

pwszDriver:打印机驱动名称,可以为NULL也可以写成“WINSPOOL”

pwszDevice:打印机名称

pszPort:端口名称,为NULL使用默认端口。

pdm:DEVMODE指针,用于配置打印参数比如打印份数,打印方向,为NULL使用默认打印配置。

2.开始一个打印作业

int StartDoc(
  HDC hdc,              // handle to DC
  CONST DOCINFO* lpdi   // contains file names
);
3.结束一个打印作业

int EndDoc(
  HDC hdc   // handle to DC
);
4.开始一个页面

int StartPage(
  HDC hDC   // handle to DC
);
5.结束一个页面
int EndPage(
  HDC hdc   // handle to DC
);
下面贴一段示例代码,注意该代码没有进行出错处理:
TCHAR lpszPrinter[MAX_PATH];
		DWORD nSize = MAX_PATH;
		GetDefaultPrinter(lpszPrinter,&nSize);
		DOCINFO docInfo ={0};
		HDC hDC = ::CreateDC(NULL, lpszPrinter, NULL,NULL);
		docInfo.cbSize = sizeof(DOCINFO);
		docInfo.lpszDocName = L"TEST";
		::StartDoc(hDC,&docInfo);
		::StartPage(hDC);
		//在此绘图
		::EndPage(hDC);
		::EndDoc(hDC);
		::DeleteDC(hDC);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值