#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);