VC++ 获取电脑当前的打印机

void EnumeratePrinters()
{
	PRINTER_INFO_2* pPrinterInfo = nullptr;
	DWORD dwBytesNeeded = 0;
	DWORD dwNumPrinters = 0;

	// 获取所需缓冲区大小
	EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, nullptr, 2, nullptr, 0, &dwBytesNeeded, &dwNumPrinters);

	if (dwBytesNeeded > 0)
	{
		pPrinterInfo = reinterpret_cast<PRINTER_INFO_2*>(new BYTE[dwBytesNeeded]);

		if (EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, nullptr, 2, reinterpret_cast<LPBYTE>(pPrinterInfo), dwBytesNeeded, &dwBytesNeeded, &dwNumPrinters))
		{
			// 遍历打印机列表
			for (DWORD i = 0; i < dwNumPrinters; i++)
			{
				TRACE(_T("打印机名称:%s\\n"), pPrinterInfo[i].pPrinterName);
				TRACE(_T("驱动程序名称:%s\\n"), pPrinterInfo[i].pDriverName);
				TRACE(_T("打印机端口:%s\\n"), pPrinterInfo[i].pPortName);
				TRACE(_T("\\n"));
			}
		}

		delete[] reinterpret_cast<BYTE*>(pPrinterInfo);
	}
}

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注