您的位置:首页 > 其它

VC/MFC得到电脑的默认打印机、设置默认打印机、遍历电脑打印机

2015-04-25 23:48 531 查看
/article/5059809.html

得到电脑的默认打印机、设置默认打印机、遍历电脑打印机GetDefaultPrinter,SetDefaultPrinter,EnumPrinters

得到电脑的默认打印机

TCHAR szBuffer[1024]={0};

DWORD length = 1024;

intret = ::GetDefaultPrinter(szBuffer,&length);

if(ret== FALSE)

ret = ::GetLastError();

else

{

SetDlgItemText(IDC_EDIT1,szBuffer);

return;

}

if(ret == ERROR_INSUFFICIENT_BUFFER)

{

CString temp;

temp.Format(_T("%d"),length);

AfxMessageBox(CString(_T("ERROR_INSUFFICIENT_BUFFER"))+_T("the real size is ")+temp);

}

elseif(ret == ERROR_FILE_NOT_FOUND)

AfxMessageBox(_T("ERROR_FILE_NOT_FOUND"));

else

{

CString strRet;

strRet.Format(_T("%d"),ret);

AfxMessageBox(strRet);

}

设置电脑默认打印机

TCHAR szPrinterName[1024]={0};

GetDlgItemText(IDC_EDIT2,szPrinterName,1024);

BOOL ret = FALSE;

ret = SetDefaultPrinter(szPrinterName);

if(ret== FALSE)

AfxMessageBox(_T("设置默认打印机失败"));

else

AfxMessageBox(_T("设置默认打印机成功"));

遍历电脑中的打印机

DWORD Flags = PRINTER_ENUM_FAVORITE |PRINTER_ENUM_LOCAL;

DWORD cbBuf;

DWORD pcReturned ;

CString str;

DWORD Level = 2;

TCHAR Name[500]={0} ;

::EnumPrinters(Flags,

Name,

Level,

NULL,

0,

&cbBuf, //需要多少内存

&pcReturned) ;

constLPPRINTER_INFO_2 pPrinterEnum = (LPPRINTER_INFO_2)LocalAlloc(LPTR, cbBuf + 4) ;

if(!pPrinterEnum)

{

str.Format(L"error is %d",GetLastError());

MessageBox(str,0,0);

}

if(!EnumPrinters(

Flags,

Name,

Level,

(LPBYTE)pPrinterEnum,

cbBuf,

&cbBuf,

&pcReturned)

)

{

str.Format(L"error is %d",::GetLastError());

MessageBox(str,0,0);

return ;

}

CString temp;

temp.Format(_T("有几个数组元素%d"),pcReturned);

AfxMessageBox(temp);

for(unsignedint i=0;i<pcReturned;i++)

{

m_ListPrinter.InsertItem(i,NULL); //插入一行

LPPRINTER_INFO_2 pInfo=&pPrinterEnum[i];

m_ListPrinter.SetItemText(i,0,pInfo->pPrinterName);

m_ListPrinter.SetItemText(i,1,pInfo->pServerName);

m_ListPrinter.SetItemText(i,2,pInfo->pDriverName);

m_ListPrinter.SetItemText(i,3,pInfo->pPrintProcessor);

}

LocalFree(pPrinterEnum);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: