主要使用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; }