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

http://www.cnblogs.com/zhangdongsheng/archive/2012/08/24/2655090.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);

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值