您的位置:首页 > 其它

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

2015-03-26 21:03 134 查看
#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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: