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

时间紧迫,直接上代码:

 

得到电脑的默认打印机

    TCHAR szBuffer[1024]={0};
    DWORD length = 1024;
    int ret = ::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);
    }
    else if(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) ;
    const LPPRINTER_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(unsigned int 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);

 

 

时间: 2024-09-26 06:29:20

遍历电脑打印机、设置默认打印机、EnumPrinters ,SetDefaultPrinter,GetDefaultPrinter的相关文章

Word2003怎么设置默认打印机

许多人不知道如何在Word2003中怎么设置默认打印机,今天就来教教大家设置默认打印机的详细步骤. 注意:此方法只适用于Windows XP操作系统,但其他操作系统设置也是略似相同,好好琢磨下,相信一定能成功. 步骤一.在桌面的"开始"菜单中找到"设置",选择"打印机和传真"; 步骤二.在"打印机和传真"窗口的右边选择"添加打印机"; 步骤三.此时会弹出个"添加打印机向导"窗口,选择&q

XP系统怎么设置默认打印机

XP系统怎么设置默认打印机 1.单击"开始"按钮,在弹出的菜单中找到"打印机和传真"; 2.在打开的 "打印机和传真"窗口中,我们可以看到可用的打印机的名称. 3.用鼠标右键单击要用作默认打印机的打印机图标,再单击快捷菜单上的"设为默认打印机".我电脑上只有一台虚拟的打印机,无法演示这个过程. 如果"打印机"图标或该命令旁有复选标记,则该打印机已设置为默认打印机.  

Win8设置默认打印机的快速方法

  其实在Win8下设置默认打印机与Win7的方法基本一致,非常简单快速,只需要按"Win键+X",选择"控制面板",然后找到"设备和打印机". 在需要设置成为默认的打印机上面点击鼠标右键,在弹出菜单中选择"设为默认打印机",只有这个打印机的左下角就会多出一个绿色的对勾图标,这样就成功了!

WIN7系统下打印机怎么实现设置默认打印机?

默认打印机在我们有多个打印机时会需要进行设置了,同时默认打印机在图标上会有一个选中状态了,具体的我们来看下面的现象图:   设置默认打印机步骤   1. 我们在系统中点击"开始"→"设备和打印机"→"找到打印机图标"如下所示.   如图1:     2.进入"设备和打印机" 在这个界面中会有许多打印机了,我们只要选中要设置默认打印机的图标,然后右击在弹出菜单中点击"设置为默认打印机".   如图2:    

WinXP使用打印机提示无法设置默认打印机如何解决

  方法一 通过重建本地帐号配置档恢复 1.根据提示,应该是本地帐号下配置文件损坏导致的,所以通过重建本地帐号来重新配置个人配置文件,从而来解决此问题. 2.重启电脑,用其它管理员帐号登录电脑,将该帐号重命名. 3.打开"我的电脑",并进入系统分区,打开个人帐号目录,如C:Documents and Settings. 4.如上图,将有问题的帐号重命名,注意不是删除. 5.或者进入该帐号,将其下的"NTUSER.DAT"和"NTUSER.DAT.LOG&q

xp如何设置默认打印机

如果我们的电脑安装了两台或两台以上的打印机,或者在局域网内设置了几台共享打印机,我们需要设置一台打印机为默认的打印机,即我们点击打印后,系统默认自动选择一台打印机打印.那么我们如何设置默认的打印机呢? 1.单击"开始"按钮,在弹出的菜单中找到"打印机和传真"; 2.在打开的 "打印机和传真"窗口中,我们可以看到可用的打印机的名称. 3.用鼠标右键单击要用作默认打印机的打印机图标,再单击快捷菜单上的"设为默认打印机".我电脑上只

电脑怎么连接打印机?设置默认打印机?

具体步骤 1.我们点击开始菜单下面的运行,步骤"按钮--运行"如下图所示.. 2.然后我们再输入"192.168.0.16"(这个我们根据自己公司IP地址来吧,这个是我的IP地址哦) 3.然后进入之后我们会看到有一个打印机了,如下图所示. 4.现在我们打开要设置为默认打印机的图标,然后在弹出菜单点击"连接" 如下图所示. 5.我们如果要设置默认我们先要双击打印机图标,然后打开如下窗口了.. 6.在打开的窗口中我们点击菜单上的"打印机--

用VBScript批量安装网络打印机和设置默认打印机_vbs

首先打开记事本,输入以下内容: 复制代码 代码如下: Set WshNetwork = CreateObject("WScript.Network") WshNetwork.AddWindowsPrinterConnection "\\你的网络打印机位置1" WshNetwork.AddWindowsPrinterConnection "\\你的网络打印机位置2" WshNetwork.AddWindowsPrinterConnection &q

设置默认打印机

using System.Management;string PrinterName = "HP LaserJet 6L";ManagementObjectSearcher query;ManagementObjectCollection queryCollection;string _classname="SELECT * FROM Win32_Printer";query=new ManagementObjectSearcher(_classname); que