c++列举出本地打印机和网络打印机名称

主要使用EnumPrinters函数

函数枚举可用的打印机,打印服务器,域或印刷服务供应商。

代码:(开箱即用)

#include <Windows.h>
#include <stdio.h>
#include <atlstr.h>

int main()
{
    PRINTER_INFO_2*    list;
    DWORD            cnt = 0;
    DWORD            sz = 0;
    DWORD Level = 2;
    int            i;
    int            sl;

    EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, Level, NULL, 0, &sz, &cnt);

    if ((list = (PRINTER_INFO_2*)malloc(sz)) == 0)    return 0;

    if (!EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, Level, (LPBYTE)list, sz, &sz, &cnt))
    {
        free(list);
        return 0;
    }


    printf("Number of installed printers on this pc = %i \n", cnt);

    CString PrinterName;

    for (i = 0, sl = 0; i < (int)cnt; i++)
    {


        PrinterName.Format("%s", list[i].pPrinterName);

        if (list[i].Attributes  & PRINTER_ATTRIBUTE_NETWORK)
        {
            printf(" network printer: %s\n", PrinterName);
        }
        else {
            printf(" local printer: %s\n", PrinterName);
        }

    }

    getchar();
    return 0;

}

猜你喜欢

转载自www.cnblogs.com/strive-sun/p/11766650.html