获取所有打印机,设置默认打印机,获取默认打印机

本文介绍了在Windows环境中如何获取默认打印机以及所有本地打印机,并展示了如何设置新的默认打印机。通过调用`GetDefaultPrinter`函数获取当前默认打印机,使用`EnumPrinters`枚举本地打印机,并通过`SetDefaultPrinter`来改变默认打印机。
#include <winspool.h>
#pragma comment(lib, "Winspool.lib")
/////////////////////////获取默认打印机/////////////////////
static void GetDefaultPrinter(CString& csPrinter)
{
HANDLE hPrinter = NULL;
DWORD dwSize = 0;    
if((!::GetDefaultPrinter(NULL, &dwSize)) && GetLastError()==ERROR_INSUFFICIENT_BUFFER)    
{    
TCHAR *szPrinter = new TCHAR[dwSize+1];    
if(::GetDefaultPrinter(szPrinter, &dwSize))    
{    
csPrinter = szPrinter; 
}
delete []szPrinter;    
}
}
////////////////////////////获取所有打印机/////////////////////////////////////////
CString csDefault;
GetDefaultPrinter(csDefault);
DWORD dwSize,dwPrinters;
BOOL bSet = FALSE;
CString strName;//存储名称,可以自己设定
EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,NULL,0,&dwSize,&dwPrinters);
BYTE* pBuffer=new BYTE[dwSize];
EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,pBuffer,dwSize,&dwSize,&dwPrinters);
if (dwPrinters!=0)
{
PRINTER_INFO_5* pPrnInfo=(PRINTER_INFO_5*)pBuffer;
for (UINT i=0;i<dwPrinters;i++)
{
strName=pPrnInfo->pPrinterName;
m_comBox.InsertString(i, strName);
if (!bSet)
{
if (csDefault == strName)
{
m_comBox.SetCurSel(i);
bSet = TRUE;
}
}
pPrnInfo++;
}
}
delete[] pBuffer;


////////////设置默认打印机//////////
::SetDefaultPrinter(csTxt);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值